一个数据库的笔试题,求解

来源:百度知道 编辑:UC知道 时间:2024/06/27 09:16:43
已经一个表的结构如下:

COL1   COL2
 a      aaa
 b      bbb
 a      aa2
 a      aa3
 b      bb2

求SQL语句,其运行后的输出结果如下:

a aaa,aa2,aa3
b bbb,bb2

期待高手解答下,谢谢:)

如果这张表是写死了,倒可以写一条sql语句.如下是sqlsever语句
select COL1,
isnull(max(case when COL2='aaa' then COL2+',' end),'') +
isnull(max(case when COL2='aa2' then COL2+',' end),'') +
isnull(max(case when COL2='aa3' then COL2+',' end),'') +
isnull(max(case when COL2='bbb' then COL2+',' end),'') +
isnull(max(case when COL2='bb2' then COL2 end),'') as 'COL2'
from MyTable group by COL1
如果可能扩展,那就得用pl/sql了

create function getresult(@c varchar(100))
returns varchar(4000)
as
begin
declare @r varchar(4000)
set @result=''
select @r= isnull(@r+',','')+ COL2 from 表名 where COL1=@c
return @r
end

select COL1,dbo.getresult(COL1) from 表名 group by COL1

这是通过函数的方法来完成的。
先建了getres