日期:2014-05-19  浏览次数:20569 次

如何写这个汇总表的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, '刘八 '