数据透视表 - 使用多个列

时间:2015-02-09 10:34:15

标签: sql-server pivot

使用数据透视表可以将列基于两个值(在我的示例中为'code'和'val')?从它的外观你不能,但这似乎有点限制我,所以也许我只是误解了一些东西。例如,如果我的数据表如下所示:

代码VAL总
---- --- -----
SI 12 90个
SI 12 30个
SI 24 240个
CI 12 210

我想要的输出是:

SI12 SI24 CI12
---- ---- ----
120 240 210

如果有人能告诉我如何使用数据透视表或其他方法来解决这个问题,我会很感激吗?

1 个答案:

答案 0 :(得分:0)

试试这个,

DECLARE @mytable TABLE
  (
     code  VARCHAR(2),
     val   INT,
     total INT
  )

INSERT INTO @mytable
VALUES      ('SI',
             12,
             90),
            ('SI',
             12,
             30),
            ('SI',
             24,
             240),
            ('CI',
             12,
             210)

SELECT *
FROM   @mytable

SELECT *
FROM   (SELECT code + CONVERT(VARCHAR(2), VAL) VAL,
               total
        FROM   @mytable) T
       PIVOT(sum(total)
            FOR VAL IN ([SI12],
                        [SI24],
                        [CI12])) AS PIVOTTABLE