我试图获取所有只有零的Id
行。只有一个发生时才返回行
Id | valid
---| ------
1 | 0
1 | 1
2 | 0
2 | 0
3 | 1
4 | 0
4 | 1
5 | 0
6 | 1
我试图获取所有只有零的Id
行。只有一个发生时才返回行
Id | valid
---| ------
1 | 0
1 | 1
2 | 0
2 | 0
3 | 1
4 | 0
4 | 1
5 | 0
6 | 1
SELECT ID
FROM myTable
WHERE Valid = 0
AND ID NOT IN (
SELECT ID
FROM myTable
WHERE Valid != 0
)
如果您的ID具有只由零的有效这笔款项将为零。这是一个代码示例。
drop table if exists dbo.Table03;
create table dbo.Table03 (
Id int
, valid int
);
insert into dbo.Table03 (Id, valid)
values (1, 0), (1, 1), (2, 0), (2, 0), (3, 1), (4, 0), (4, 1), (5, 0), (6, 1);
select
t.Id
from dbo.Table03 t
group by t.Id
having SUM(t.valid) = 0
虽然这段代码可能回答这个问题,但提供关于如何和/或为何解决问题的附加上下文会改善答案的长期值。 – Badacadabra
您可以使用LEFT JOIN
与NULL
检查,以达到您预期的结果。
样品执行与给定的数据:
DECLARE @TestTable TABLE (Id int, valid int);
INSERT INTO @TestTable (Id, valid)
VALUES (1, 0), (1, 1), (2, 0), (2, 0), (3, 1), (4, 0), (4, 1), (5, 0), (6, 1);
SELECT T1.*
FROM @TestTable T1
LEFT JOIN @TestTable T2 ON T2.Id = T1.Id AND T2.valid <> 0
WHERE T2.Id IS NULL
结果:
Id valid
----------
2 0
2 0
5 0
如果你想Id
唯一的,使用SELECT DISTINCT T1.Id
。
另一个选择
Select A.*
From YourTable A
Join (
Select ID
From YourTable
Group By ID
Having min(valid)=0 and max(valid)=0
) B
on A.ID=B.ID
返回
Id valid
2 0
2 0
5 0
[ “去哪儿”(https://msdn.microsoft.com/fr-fr/library/ms188047.aspx) –
集团通过+有最大值= 0或总和值= 0那些也会这样做,左连接而不是它 –