用SQL实现由原表A到目标表B的转换,将原表A中CC列的值做为目标表B的字段,目标表B新建字段的值为原表A中对应的_Value值,如以下两表。
原表A
ID CC _Value
-- -- --- -----
-- -- --- -----
1 D 100
2 D 200
3 D 300
1 E 1000
2 E 2000
3 E 3000
1 F 10
2 F 20
3 F 30
目标表B
ID D E F
-- -- -- --
-- -- -- --
1 100 1000 10
2 200 2000 20
3 300 3000 30
具体实现方法如下:
DECLARE @s nvarchar(4000)
--交叉报表处理代码头
SET @s='SELECT ID '
--生成列记录水平显示的处理代码拼接(处理Item列)
SELECT @s=@s
+','+QUOTENAME(CC)
+N'=SUM(CASE CC WHEN '+QUOTENAME(CC,N'''')
+N' THEN _Value END)'
FROM A
GROUP BY CC
--拼接交叉报表处理尾部,并且执行拼接后的动态SQL语句
EXEC(@s+N'
FROM A
GROUP BY ID')
可参考:http://community.csdn.net/Expert/topic/5493/5493823.xml?temp=.6335108