首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

小小疑点行 列 互相转换一下

2012-03-17 
小小问题行 列 互相转换一下 例如表ANAMENUMBER张三100李四89王五70.....想要的结果张三李四王五1008970[

小小问题行 列 互相转换一下

例如表A
NAME       NUMBER
张三         100
李四         89
王五         70
.....

想要的结果
张三       李四       王五
100           89         70

[解决办法]

--如果NAME是固定的
Select
Max(Case NAME When '张三 ' Then NUMBER Else 0 End) As 张三,
Max(Case NAME When '李四 ' Then NUMBER Else 0 End) As 李四,
Max(Case NAME When '王五 ' Then NUMBER Else 0 End) As 王五
From
A

--如果NAME不是固定的
Declare @S Varchar(8000)
Select @S = ' '
Select @S = @S + ', Max(Case NAME When ' ' ' + NAME + ' ' ' Then NUMBER Else 0 End) As [ ' + NAME + '] '
From A Group By NAME
Select @S = 'Select ' + Stuff(@S, 1, 1, ' ') + ' From A '
EXEC(@S)
[解决办法]
select t= 1,a.* into # from a
declare @sql varchar(8000)
set @sql = 'select '
select @sql = @sql + ',sum(case t when ' ' '+ t + ' ' ' then number end) [ '+name+ '] '
from (select distinct name from #) as b
select @sql = @sql+ ' from # group by t '
exec(@sql)

热点排行
Bad Request.