有这个贴子表的两个字段F1,F2,其值如下
F1 F2
01 a
01 aa
02 b
02 bb
02 bbb
现在想用SQL语句让上面的记录显示为
01 a
aa
02 b
bb
bbb
我想说的是 表的两个字段F1,F2,其值如下
F1 F2
01 a
01 a
02 b
02 b
02 bbb
现在想用SQL语句让上面的记录显示为 下面的方式。
01 a
a
02 b
b
bbb
F1 F2
01 a
01 aa
02 b
02 bb
02 bbb
现在想用SQL语句让上面的记录显示为
01 a
aa
02 b
bb
bbb
我想说的是 表的两个字段F1,F2,其值如下
F1 F2
01 a
01 a
02 b
02 b
02 bbb
现在想用SQL语句让上面的记录显示为 下面的方式。
01 a
a
02 b
b
bbb
01 a
01 a
02 b
02 b
create table tb(F1 varchar(10) , F2 varchar(10))
insert into tb values('01' , 'a')
insert into tb values('01' , 'aa')
insert into tb values('02' , 'b')
insert into tb values('02' , 'bb')
insert into tb values('02' , 'bbb')
goselect case when F2=(select min(F2) from tb where F1=a.F1) then f1 else '' end as f1 , f2
from tb a
order by f2drop table tb/*
f1 f2
---------- ----------
01 a
aa
02 b
bb
bbb(所影响的行数为 5 行)
*/
insert into tb values('01' , 'a')
insert into tb values('01' , 'a')
insert into tb values('02' , 'b')
insert into tb values('02' , 'b')
insert into tb values('02' , 'bbb')
go
select * , id = identity(int,1,1) into tmp from tbselect case when id=(select min(id) from tmp where F1=a.F1) then f1 else '' end as f1 , f2
from tmp a
order by f2drop table tb,tmp/*
f1 f2
---------- ----------
01 a
a
02 b
b
bbb(所影响的行数为 5 行)
*/
就是order by 这些内容不要.
F1 varchar(10),
F2 varchar(10)
)insert @t select
'01', 'a'
union all select
'01', 'a'
union all select
'02', 'b'
union all select
'02', 'b'
union all select
'02', 'bbb' declare @F1 varchar(10)
declare @F11 varchar(10)
update @t set
@F1=case when @F11=F1 then '' else F1 end,
@F11=F1,
F1=@F1select * from @t--结果
F1 F2
---------- ----------
01 a
a
02 b
b
bbb(所影响的行数为 5 行)