每个ID提取一行

时间:2017-06-26 17:24:33

标签: sql database

我有问题从表中分组一些数据。 只有当num = 1和num = 99的行名称不同时,我才想获得num = 1的完整行。

这是一个例子:

id |  name | num
001  frank   1
001  jonh    2
001  alfred  99
002  annie   1
002  maurice 99
003  mary    1
003  mary    99

我想得到这个结果:

id |  name | num
001  frank   1
002  annie   1

1 个答案:

答案 0 :(得分:0)

select '001' as id,  cast('frank' as nvarchar(10)) as name ,  1 as num
into #temp1

insert into #temp1(id,[name],num)
values
('001',  'jonh' ,   '2'),
('001',  'alfred' , '99'),
('002',  'annie' ,  '1'),
('002',  'maurice', '99'),
('003',  'mary'   , '1'),
('003',  'mary'   , '99')
select * from #temp1
where name not in (select name from #temp1 group by name having count(*)>1)
and num = 1

请阅读Igor的评论