我有一张表:
Region|Value|Driver|
GR |1 |capex
GR |2 |opex
我需要做的是让两个驱动程序像列一样:
Region|Capex|Opex
GR |1 |2
我知道如何解开,但是旋转会给我一个问题,因为有两列。
知道我怎么能做到这一点?顺便说一下,有多个Driver
,但我只需要两个
答案 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()
等)。