我試圖獲取所有隻有零的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那些也會這樣做,左連接而不是它 –