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

SQL2005 怎么将行转换成列

2013-01-20 
SQL2005 如何将行转换成列大家好!我想将以下的数据转换成列,实在不知道怎么做,请各位帮忙指点,谢谢目前数

SQL2005 如何将行转换成列
大家好!  我想将以下的数据转换成列,实在不知道怎么做,请各位帮忙指点,谢谢

目前数据

模具代码 模具名称               产品名称
S1113    PTB-403端子备模        PTB-403F-端子
S1113   PTB-403端子备模        PTB-403-端子
S1114   PTB-405端子(备模)  PTB-405F-端子
S1114   PTB-405端子(备模)  PTB-405-端子

转换后的结果是
模具代码模具名称产品名称A 产品名称B
S1113  PTB-403端子备模        PTB-403F-端子 PTB-403-端子
S1114  PTB-405端子(备模)  PTB-405F-端子 PTB-405-端子

该效果该如何实现
解决了干嘛不结贴.

--CREATE TABLE test (模具代码VARCHAR(10), 模具名称  VARCHAR(20),产品名称 VARCHAR(20))
--INSERT INTO test 
--SELECT 'S1113','PTB-403端子备模','PTB-403F-端子'
--UNION ALL 
--SELECT 'S1113','PTB-403端子备模','PTB-403-端子'
--UNION ALL 
--SELECT 'S1114','PTB-405端子(备模)','PTB-405F-端子'
--UNION ALL 
--SELECT 'S1114','PTB-405端子(备模)','PTB-405-端子'

declare @s nvarchar(4000)
set @s=''
Select     @s=@s+','+'产品名称'+CASE WHEN ROW_NUMBER()OVER(ORDER BY GETDATE())=1 THEN 'A' ELSE 'B' END +'=max(case when [模具名称]='+quotename([模具名称],'''')+' then [产品名称] else ''0'' end)'
from test group BY [模具名称]
exec('select [模具代码],[模具名称]'+@s+' from test group by [模具代码],[模具名称]')

/*
模具代码       模具名称                 产品名称A                产品名称B
---------- -------------------- -------------------- --------------------
S1113      PTB-403端子备模          PTB-403-端子           0
S1114      PTB-405端子(备模)        0                    PTB-405-端子
*/
 

热点排行