看板 Database 關於我們 聯絡資訊
※ 引述《YaMeiLo (亞妹露~!!)》之銘言: : ※ 引述《Falconeye (未識綺羅香)》之銘言: : : 兩個欄位如下: : : customer_id product_code : : 1 VF081 : : 1 VF082 : : 2 VF081 : : 2 VF082 : : 3 VF081 : : 4 VF081 : : 4 VF081 : : 請教,要如何算出同時有VF081跟VF082的customer數量? : : 即id=1,2是符合條件的,答案為2筆 : : 謝謝 : CREATE TABLE #TEMP (customer_id int, product_code varchar(10)) : INSERT INTO #TEMP VALUES (1,'VF081') : …… : INSERT INTO #TEMP VALUES (4,'VF081') : SELECT customer_id FROM ( : SELECT DISTINCT customer_id ,product_code : FROM #TEMP : WHERE product_code in ('VF081' ,'VF082') : ) AS RESULT : GROUP BY customer_id : HAVING COUNT(customer_id) = 2; : 先排除重複資料 => 同 customer_id 與 product_code , : 再列出符合條件 => COUNT(customer_id) = 2 。 : 如果 product_id 很多個, WHERE 後面刪掉並調整 COUNT 條件也可。 這樣可以嗎 ? SELECT customer_id FROM table WHERE product_code IN ('VF081','VF082') GROUP BY customer_id HAVING ABS(SUM(CASE WHEN product_code = 'VF081' THEN 1 ELSE -1 END)) <> COUNT(*) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.68.114.76 ※ 編輯: smlboby 來自: 219.68.114.76 (03/16 16:35)
YaMeiLo:還滿酷的寫法,我一開始是直接想很多個product怎麼辦 03/16 17:25
YaMeiLo:如果product來自於其它表,WHERE IN 和 COUNT 的 比較值就 03/16 17:28
YaMeiLo:可以再用同一個子查詢 03/16 17:28