我有一個表格,格式如下。SQL自加入查詢
Id Orig_Id Type
11 1111 Internal
12 1111 Internal
13 1111 Internal
14 1112 External
15 1112 Internal
我想檢索所有Orig_Id的「ONLY」Type as Internal。查詢應返回1111
我有一個表格,格式如下。SQL自加入查詢
Id Orig_Id Type
11 1111 Internal
12 1111 Internal
13 1111 Internal
14 1112 External
15 1112 Internal
我想檢索所有Orig_Id的「ONLY」Type as Internal。查詢應返回1111
使用HAVING
:
SELECT Id
FROM tbl
GROUP BY Orig_Id
HAVING
SUM(CASE WHEN Type <> 'Internal' THEN 1 ELSE 0 END) = 0
AND SUM(CASE WHEN Type = 'Internal' THEN 1 ELSE 0 END) > 0
第一個條件可以確保Orig_Id
與Type = Internal
沒有行。第二個確保它至少有一個Internal
。
只是爲了檢查是否有隻有一個Type
而只有一個是 '內部'
SELECT Orig_Id
FROM (VALUES (11,1111,'Internal'),
(12,1111,'Internal'),
(13,1111,'Internal'),
(14,1112,'External'),
(15,1112,'Internal')) AS T(Id ,Orig_Id, Type)
GROUP BY Orig_Id
HAVING
-- There is one
COUNT(DISTINCT Type) = 1
-- and only one internal
AND MIN(Type) = 'Internal'
我想我不明白你正確
SELECT DISTINCT Orig_Id FROM YOUR_TABLE WHERE Type='Internal'