Re: [SQL ] 相同字段两条件

楼主: smlboby (波比)   2014-03-16 16:29:11
※ 引述《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(*)
作者: YaMeiLo (亚妹露~!!)   2014-03-16 17:25:00
还满酷的写法,我一开始是直接想很多个product怎么办如果product来自于其它表,WHERE IN 和 COUNT 的 比较值就可以再用同一个子查询

Links booklink

Contact Us: admin [ a t ] ucptt.com