假设如下表:
id aa
----------- ----
1 a
1 b
1 c
2 d
2 e
2 f
id aa
----------- ----
1 a
1 b
1 c
2 d
2 e
2 f
写一条语句得到如下的结果
id aa
----------- ----
1 a,b,c,
2 d,e,f,
----------- ----
1 a,b,c,
2 d,e,f,
实际上就是按ID汇总,然后对于非汇总的aa字段,以字符串相加的方式实现,可惜的是,标准函数中,没有以上的实现功能。
问人无数,翻烂SQL在线帮助,总算得到一个变通的解法,就是利用自定义函数,如下:
创建一个自定义函数
create function fn_test
(
@id int
)
returns varchar(1024)
as
创建一个自定义函数
create function fn_test
(
@id int
)
returns varchar(1024)
as
begin
declare @ddd varchar(1024)
select @ddd = ''
declare @ddd varchar(1024)
select @ddd = ''
select @ddd = @ddd + aa + ','
from tmp_detail
where id = @id
from tmp_detail
where id = @id
return @ddd
end
go
go
然后利用该函数写SQL语句
select id, dbo.fn_test(id) from tmp_detail
group by id
select id, dbo.fn_test(id) from tmp_detail
group by id