我对SQL Server中的pivot函数有疑问。我有一张表如下所示:
L | SH | SUM | KTYPE
----------------------
L1 | A | 10 | 1
L1 | B | 12 | 1
L1 | A | 14 | 2
L1 | B | 19 | 2
L2 | A | 9 | 1
L2 | B | 25 | 1
L3 | A | 2 | 1
L3 | B | 2 | 1
L4 | A | 9 | 1
L4 | B | 23 | 1
...
因此,我希望有以下结构:
| 1 | 2 | Total |
L | A | B | A | B | A | B |
----------------------------------------
L1 | 10 | 12 | 14 | 19 | 24 | 31 |
L2 | 9 | 25 | 0 | 0 | 9 | 25 |
L3 | 2 | 2 | 0 | 0 | 2 | 2 |
L4 | 9 | 23 | 0 | 0 | 9 | 23 |
...
如果我是认真的,我不知道该怎么做。我能够按KTYPE
“转动”数据,但不能KTYPE
和SH
。有人可以告诉我这是否可行并给我一个提示?
提前致谢! 托米
答案 0 :(得分:0)
以上是关于连接字段的上述评论的示例。
DECLARE @TMP TABLE (L VARCHAR(2), SH VARCHAR(1), SUM INT, KTYPE INT)
INSERT INTO @TMP
SELECT 'L1','A',10,1 UNION ALL
SELECT 'L1','B',12,1 UNION ALL
SELECT 'L1','A',14,2 UNION ALL
SELECT 'L1','B',19,2 UNION ALL
SELECT 'L2','A',9,1 UNION ALL
SELECT 'L2','B',25,1 UNION ALL
SELECT 'L3','A',2,1 UNION ALL
SELECT 'L3','B',2,1 UNION ALL
SELECT 'L4','A',9,1 UNION ALL
SELECT 'L4','B',23,1
SELECT *
FROM (SELECT CAST(KTYPE AS VARCHAR)+SH AS KTYPESH,SUM VAL,L FROM @TMP) DATATABLE
PIVOT (SUM([VAL])
FOR KTYPESH IN ([1A],[1B],[2A],[2B])) PIVOTTABLE