与多列的数据透视表

时间:2018-05-07 13:18:00

标签: sql sql-server pivot

我有一张表:

Region|Value|Driver|
GR    |1    |capex
GR    |2    |opex

我需要做的是让两个驱动程序像列一样:

Region|Capex|Opex
GR    |1    |2

我知道如何解开,但是旋转会给我一个问题,因为有两列。 知道我怎么能做到这一点?顺便说一下,有多个Driver,但我只需要两个

2 个答案:

答案 0 :(得分:1)

您还可以使用条件聚合:

select Region,
       sum(case when Driver = 'capex' then Value else 0 end) Capex,
       sum(case when Driver = 'opex' then Value else 0 end) opex
from table t
where Driver in ('capex', 'opex')
group by Region;

答案 1 :(得分:0)

您需要使用值driver来旋转(Value)一列。

SELECT
    P.Region,
    P.capex,
    P.opex
FROM
    YourTable AS T
    PIVOT (
        MAX(T.Value) FOR T.Driver IN ([capex], [opex])
    ) AS P

请检查您是否需要MAX()(或SUM()等)。