如何写这个汇总表的SQL语句?
我有一张流水线记录的“定单”数据表,里面有(ID 、 姓 名 、预 定、数 量)等信息,想按姓名做一个汇总信息。
数据表信息记录例如:
ID 姓 名 预 定 数 量
1 张三 铅笔 23
2 李四 水笔 15
3 张三 毛笔 20
4 张三 水笔 33
5 李四 毛笔 22
6 王二 铅笔 44
我想使用SQL语句实现按姓名数据汇总并显示出来,中间使用 ", "号隔开格式如下:
姓 名 预 定 数 量
张三 铅笔,毛笔,水笔 23,20,33
李四 水笔,毛笔 15,22
王二 铅笔 44
求助:我该如何写这个SQL语句?
------解决方案----------------------SQL2000的話,寫function比較好
GO
create function fn_test(@name varchar(20),@flag int)
returns varchar(100)
AS
begin
declare @str varchar(100)
set @str= ' '
if @flag=1
begin
select @str=@str+ ', '+[预定] from T where [姓名] =@name
end
if @flag=2
begin
select @str=@str+ ', '+rtrim([数量]) from T where [姓名] =@name
end
if len(@str)> 0
set @str=stuff(@str,1,1, ' ')
return @str
end
GO
select [姓名],dbo.fn_test( [姓名],1) as [预定],dbo.fn_test( [姓名],2) as [数量]
from T
group by [姓名]
------解决方案--------------------借助用户定义函数:
---------------------------------
--生成测试数据
create table 表(部门 int,人员 varchar(20))
insert into 表 select 1, '张三 '
insert into 表 select 1, '李四 '
insert into 表 select 1, '王五 '
insert into 表 select 2, '赵六 '
insert into 表 select 2, '邓七 '
insert into 表 select 2, '刘八 '