SELECT lie1,lie2,IDENTITY(int) ID INTO #t FROM tbSELECT CASE WHEN (SELECT COUNT(1) FROM #t b WHERE b.id<a.id AND b.lie1=a.lie1)>0) THEN a.lie1 ELSE '' END,a.lie2 FROM #t a以上代码随便手写,未经测试。这是显示问题,楼主还是交给前台程序去做吧。
declare @t table ( lie1 varchar(1), lie2 int ) insert into @t select 'a',12 union all select 'a',51 union all select 'a',15 union all select 'a',32 union all select 'a',26 union all select 'b',10 union all select 'b',7 union all select 'b',9 union all select 'b',20select id=identity(int,1,1),* into # from @tselect case when lie1=(select distinct lie1 from # where id+1=a.id) then '' else lie1 end as lie1,lie2 from # a go drop table #/* lie1 lie2 ---- ----------- a 12 51 15 32 26 b 10 7 9 20 */
打少一括号(或者说打多了一括号)SELECT CASE WHEN (SELECT COUNT(1) FROM #t b WHERE b.id<a.id AND b.lie1=a.lie1)>0 THEN a.lie1 ELSE '' END,a.lie2 FROM #t a
(
lie1 varchar(1),
lie2 int
)
insert into @t
select 'a',12 union all
select 'a',51 union all
select 'a',15 union all
select 'a',32 union all
select 'a',26 union all
select 'b',10 union all
select 'b',7 union all
select 'b',9 union all
select 'b',20select id=identity(int,1,1),* into # from @tselect case when lie1=(select distinct lie1 from # where id+1=a.id) then '' else lie1 end as lie1,lie2
from # a
go
drop table #/*
lie1 lie2
---- -----------
a 12
51
15
32
26
b 10
7
9
20
*/
(SELECT COUNT(1) FROM #t b WHERE b.id<a.id AND b.lie1=a.lie1)>0 THEN a.lie1 ELSE '' END,a.lie2 FROM #t a