日期:2014-05-18 浏览次数:20579 次
-->TravyLee生成测试数据:[test]
if object_id('[test]') is not null drop table [test]
create table [test]([id] int,[id2] int,[name] varchar(3),[flag] int)
insert [test]
select 1,1,'a',0 union all
select 2,1,'b',1 union all
select 3,1,'c',0 union all
select 4,2,'d',0 union all
select 5,2,'e',1 union all
select 6,3,'g',1 union all
select 7,4,'ggg',0 union all
select 8,4,'kkk',1 union all
select 9,4,'ddd',0 union all
select 10,4,'iij',0
select [id],[id2],[name] from(
select px=ROW_NUMBER()over(partition by [id2] order by [id]),
* from test where [flag]=1
)t where px=1
/*
id id2 name
2 1 b
5 2 e
6 3 g
8 4 kkk
*/
------解决方案--------------------
-->TravyLee生成测试数据:[test]
if object_id('[test]') is not null drop table [test]
create table [test]([id] int,[id2] int,[name] varchar(3),[flag] int)
insert [test]
select 1,1,'a',0 union all
select 2,1,'b',1 union all
select 3,1,'c',0 union all
select 4,2,'d',0 union all
select 5,2,'e',1 union all
select 6,3,'g',1 union all
select 7,4,'ggg',0 union all
select 8,4,'kkk',1 union all
select 9,4,'ddd',0 union all
select 10,4,'iij',0
--SQL Server 2000
select id,id2,name from test a
where not exists(select 1 from test b
where a.id2=b.id2 and a.id<b.id and b.flag=1)
and a.flag=1
/*
id id2 name
2 1 b
5 2 e
6 3 g
8 4 kkk
*/