SQL查询帮助 - 下面的说明

时间:2015-05-09 12:01:34

标签: sql sql-server

坚持如何查询此结果集。

A       B       C
162     0       NULL
162     1       NULL
162     2       NULL
163     0       000
163     1       000
163     2       000
164     0       000
164     1       NULL
164     2       NULL

我想只显示这些结果

A       B       C
162     0       NULL
162     1       NULL
162     2       NULL
164     0       000
164     1       NULL
164     2       NULL

如果列A的所有唯一实例都有值,我不想返回结果。因此,在此示例中,新结果集已从结果集中删除163,因为包含163的所有行都具有值(其为000)。 其他显示是因为该行的一个实例包含NULL,并且应显示它所有的唯一行。

我确实尝试过嵌套查询并玩弄GROUP BY,但还是无法破解它。

有什么建议吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

使用EXISTS查找这些行:

select A, B, C
from tablename t1
where EXISTS (select 1 from tablename t2
              where t1.A = t2.A
                and t2.C IS NULL)

或者做一个JOIN

select A, B, C
from tablename t1
  JOIN (select DISTINCT A
        from tablename
        where C IS NULL) t2 ON t1.A = t2.A