日期:2014-05-18  浏览次数:20509 次

请各位帮忙,用SQL语句如何实现?谢谢!

货位       产品编号       数量  
郑州         电脑               10
郑州         打印机           15
洛阳         打印机           20
新乡         财务软件       10


转换为   格式
货位       电脑       打印机       财务软件
郑州         10             15
洛阳                         20
新乡                                             10

------解决方案--------------------
Create table test (addr nvarchar(10),pid nvarchar(10),amt int)
go
insert test values(N '郑州 ',N '电脑 ',10)
insert test values(N '郑州 ',N '打印机 ',15)
insert test values(N '洛阳 ',N '打印机 ',20)
insert test values(N '新乡 ',N '财务软件 ',10)

select *
from test

declare @sql nvarchar(400)
set @sql = 'select addr '
select @sql = @sql + ',sum(case pid when N ' ' '+pid+ ' ' ' then amt end) [ '+pid+ '] '
from (select distinct pid from test) as a
select @sql = @sql+ ' from test group by addr '
print(@sql)
exec(@sql)