一个简单的问题,在线等待----
create table #t (a int ,b varchar(1000))
insert into #t
select 1, '1 '
union
select 1, '2 '
union
select 1, '3 '
union
select 1, '4 '
union
select 1, '5 '
union
select 2, '6 '
union
select 2, '7 '
union
select 3, '8 '
select * from #t
如果a 相同,满足4个为一组
结果如下
a b
1 1;2;3;4
1 5
2 6;7
3 8
[解决办法]
--我保证现在好了(可恶的临界问题)
create table #t (a int ,b varchar(1000),ii int,i int)
insert into #t(a,b)
select 1, '1 '
union
select 1, '2 '
union
select 1, '3 '
union
select 1, '4 '
union
select 1, '5 '
union
select 2, '6 '
union
select 2, '7 '
union
select 3, '8 '
declare @a int,@b varchar(8000),@bb varchar(8000),@i int,@ii int
select @i = 0,@ii = 0
update #t
set @bb = case when a = @a and @i < 2 then @bb + '; ' + b else b end
,@ii = case when a = @a and @i < 2 then @ii else @ii+1 end
,@i = case when a = @a and @i < 2 then @i + 1 else 1 end
,@a = a,@b = b,b = @bb ,ii = @ii,i = @i
select a,max(b)
from #t
group by a,ii
order by a,ii
drop table #t
a
----------- --------
1 1;2
1 3;4
1 5
2 6;7
3 8