返回值为0的数据

时间:2016-11-03 20:58:42

标签: sql sql-server-2008

我是新手,所以对你们来说可能是一个简单的SQL查询。

在表格中,我有PFAULT 01针对一个SRID的记录。我想只获取0PFault的记录。如果任何记录有PFault 1而不是我不需要该记录。

E.g。记录可以包含01这两个值,但我只需要那些没有1的记录。字段类型为bit

样本表数据

ID   | SRID  | PFault 
---- | ----  | ----
2255 | 1212  | 0
2256 | 1212  | 0
2257 | 1212  | 1
2258 | 1213  | 0
2259 | 1213  | 1
2260 | 1214  | 0
2261 | 1214  | 0
2262 | 1216  | 0

如上所述我需要

的数据
SRID 1214 and 1216

3 个答案:

答案 0 :(得分:3)

我假设您指的是SRID。如果这就是你所需要的:

select srid
from t
group by srid
having max(Pfault) = 0;

您也可以将其写为:

have max(cast(Pfault as int)) = 0

如果您想要原始行:

select t.*
from t
where not exists (select 1 from t t2 where t2.srid = t.srid and t2.Pfault = 1);

答案 1 :(得分:1)

你几乎用英语表达它的方式可以直接翻译成SQL。这是一个非常好的开始。那个直截了当的翻译看起来像:

select srid from table
except
select srid from table where pfault = 1;

答案 2 :(得分:0)

SELECT SRID 

FROM #Table Otr 在哪里PFault = 0且不是EXISTS(SELECT 1来自#Table inr WHERE inr.pfault = 1 AND inr.SRID = Otr.SRID) GROUP BY SRID