我有一张桌子,我希望得到s#,其中s#有p1而不是p2;
表ss1 p1
s1 p2
s1 p3
s1 p4
s2 p1
s2 p3
s3 p2
s3 p3
我的结果应该是s2。我尝试的where子句和连接返回s1,s2这是错误的。
答案 0 :(得分:1)
试试这个:
SELECT s#
FROM (SELECT s#, SUM(CASE WHEN p# = 'p1' THEN 1 ELSE 0 END) p1ct
, SUM(CASE WHEN p# = 'p2' THEN 1 ELSE 0 END) p2ct
FROM s
GROUP BY s#)
WHERE p1ct > 0
AND p2ct = 0;