Oracle从具有和不具有值的另一列中选择列条目

时间:2013-02-13 01:15:48

标签: mysql oracle

我有一张桌子,我希望得到s#,其中s#有p1而不是p2;

表s
s#P#

s1 p1

s1 p2

s1 p3

s1 p4

s2 p1

s2 p3

s3 p2

s3 p3

我的结果应该是s2。我尝试的where子句和连接返回s1,s2这是错误的。

1 个答案:

答案 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;