读书人

一个简单的有关问题待-

发布时间: 2012-02-01 16:58:19 作者: rapoo

一个简单的问题,在线等待----

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

读书人网 >SQL Server

热点推荐