假设我有以下表格
Person table
和personStatus table
。
declare @Persons table
(PersonId int)
insert into @Persons select 10
insert into @Persons select 11
insert into @Persons select 12
insert into @Persons select 13
insert into @Persons select 14
declare @PersonStatus table
(id int,statuss int)
insert into @PersonStatus (id,statuss) values(14,4)
insert into @PersonStatus (id,statuss) values(10,0)
insert into @PersonStatus (id,statuss) values(10,0)
insert into @PersonStatus (id,statuss) values(11,1)
insert into @PersonStatus (id,statuss) values(10,1)
insert into @PersonStatus (id,statuss) values(11,2)
insert into @PersonStatus (id,statuss) values(12,0)
insert into @PersonStatus (id,statuss) values(12,1)
insert into @PersonStatus (id,statuss) values(12,2)
insert into @PersonStatus (id,statuss) values(13,1)
insert into @PersonStatus (id,statuss) values(13,3)
现在我想找到他们的状态只在这个集{0,1,2}中的人ID 结果是---> 10,11,12
怎么做?
答案 0 :(得分:3)
SELECT ID
FROM PersonStatus
GROUP BY ID
HAVING SUM(CASE WHEN statuss IN (0, 1, 2) THEN 1 ELSE 0 END) >= 1 AND
SUM(CASE WHEN statuss NOT IN (0, 1, 2) THEN 1 ELSE 0 END) = 0
答案 1 :(得分:2)
试试这个
SELECT DISTINCT ID
FROM @PersonStatus PT
WHERE NOT EXISTS (SELECT * FROM @PersonStatus WHERE statuss not in (0,1,2) AND id=PT.id)