0

次のテーブル Person tableとがありpersonStatus tableます。

declare @Persons table
(PersonId int)

insert into @Persons select 10   
insert into @Persons select 11    

declare @PersonStatus table
(id int,statuss int)

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,0)
insert into @PersonStatus (id,statuss) values(11,0)

ここで、すべてのステータスがゼロである個人IDを検索したいのですが、結果は--->10です。

どうやってするの?

4

3 に答える 3

1
SELECT  id
FROM    @PersonStatus
GROUP   BY ID
HAVING  COUNT(DISTINCT statuss) = 1 AND
        MAX(statuss) = 0

また

SELECT  id
FROM    @PersonStatus
GROUP   BY ID
HAVING  MAX(statuss) = MIN(statuss) AND
        MAX(statuss) = 0
于 2013-03-27T12:31:35.627 に答える
1

@Personsテーブルには単なる列以上のものがあり、そこから他の列が必要になる可能性があると想定しているため、クエリの一部にする必要があるPersonIdと思います。@Persons

SELECT p.PersonId --, other columns from p
 FROM @Persons AS p
 WHERE EXISTS (SELECT id FROM @PersonStatus
   WHERE id = p.PersonId
   GROUP BY id HAVING MAX(statuss) = 0);
于 2013-03-27T12:36:39.777 に答える
0
select distinct p.id from @PersonStatus as p
where Statuss = 0
and not exists (select null from @Personstatus as t
                where p.id = t.id and t.statuss <> 0)
于 2013-03-27T12:32:27.577 に答える