紧急求助,加分!

某一表结构如下:
字段1 字段2
001 a
001 b
002 c
002 a
003 d
想得到结果:
字段1 字段2
001 a,b
002 c,a
003 d
如何实现??
---------------------------------------------------------------

直接用sql的话
select distinct a.字段1,a.字段2,b.字段2 from tablex a,tablex b where a.字段1=b.字段1 and a.字段2<>b.字段2 group by a.字段1,a.字段2

不过如果不都是2个字段2对应1个字段1的话,就不好弄了,只好用游标存储过程
---------------------------------------------------------------

你这个可以用pb的crosstab来实现,
同时也可以用存储过程来实现
---------------------------------------------------------------

CREATE PROCEDURE dbo.cursor_test
AS
declare @column1 varchar(10)
declare @column2 varchar(10)
declare @column3 int
declare @columntemp1 varchar(10)
declare @columntemp2 varchar(10)
declare @rowcount int
BEGIN
create table #temptable (column1 varchar(10),
column2 varchar(10))
select @rowcount=(select count(*) from cursortest)
select @rowcount
declare c_test cursor
for
select column1,column2 from cursortest
open c_test
fetch c_test into @column1,@column2
select @column3=1

while @@sqlstatus<>2
begin
if @columntemp1=@column1
begin
select @columntemp2=@columntemp2+','+@column2
if @column3=@rowcount
begin
insert into #temptable values(@columntemp1,@columntemp2)
end
end
else
begin
if @column3=@rowcount
begin
insert #temptable values(@column1,@column2)
end
if @column3<>1
begin
insert into #temptable values(@columntemp1,@columntemp2)
select @columntemp2=@column2
end

select @columntemp2=@column2
end
select @columntemp1=@column1
select @column3=@column3+1
fetch c_test into @column1,@column2
end
close c_test
deallocate cursor c_test
select * from #temptable order by column1
END

花了我一早上的时间写的,测试通过了,无论什么情况都可以

Published At
Categories with 数据库类
comments powered by Disqus