这可能很简单,但我对sql server和高级用法不太熟悉。基本上我无法为此形成查询。
我的桌子如下所示。每个ID的类型只有3个值(0,1,2)。
ID Type
40271 0
40271 1
40271 2
40281 0
40281 1
我想只选择没有所有类型的ID。
输出(由于缺少第3种类型,即2):
ID Type
40281 0
40281 1
我需要从表中选择所有行,对于每个ID,所有类型(0,1,2)都不存在。
我试过分组,有等条款,但无法到达那里。
我尝试了这个,但它给了我两个ID
select ID
from Table
group by ID
having count(distinct Type) > 1
答案 0 :(得分:2)
一种方法是使用EXISTS
检查ID是否少于三种类型。
SELECT ID, Type
FROM Table T
WHERE EXISTS (
SELECT 1
FROM Table
WHERE ID = T.ID
GROUP BY ID
HAVING COUNT(DISTINCT Type) < 3);
答案 1 :(得分:-1)
试试这个
select t.* from test1 t,
(select id, count(*) cnt from test1 group by id) t1
where t.id = t1.id
and t1.cnt < 3