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

sql的问题
一个group   by语句结果是
名称       数量
a               12
b               11
c               23
d               33
相让查询结果这样显示如何写SQL语句。
a       b         c         d
12     11       23       33


------解决方案--------------------
SELECT a = case when 名称 = 'a ' then 数量 else 0 end,
b = case when 名称 = 'b ' then 数量 else 0 end,
c = case when 名称 = 'c ' then 数量 else 0 end,
d = case when 名称 = 'd ' then 数量 else 0 end
From (group by语句结果)
------解决方案--------------------
select 名称,
数量=sum(case when 名称= 'a ' then 数量 else 0 end),
数量=sum(case when 名称= 'b ' then 数量 else 0 end),
数量=sum(case when 名称= 'c ' then 数量 else 0 end),
数量=sum(case when 名称= 'd ' then 数量 else 0 end)
from 表名
group by 名称

------解决方案--------------------
那就写个存储过程,用游标解决.
------解决方案--------------------

declare @s varchar(8000)
set @s = ' '
select @s = @s
+ ', '+名称+ ' = max(case 名称 when ' ' '+名称+ ' ' ' then 数量 else 0 end ) '
from tb
set @s= stuff(@s,1,1, ' ')
exec( 'select '+@s+ 'from tb group by 名称 ')
------解决方案--------------------
a b c d .....数量是不定的

行不固定不太好弄..