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-端子
*/