我有以下数据,
Year DRC DISP Id
0 140.21 0.00 5808
1 112.37 1.00 5808
0 140.21 0.00 5824
1 112.37 0.00 5824
我想像这样转动它,
Id DRC Year 0 DISP Year 0 DRC Year 1 DISP Year 1
5808 140.21 0.00 112.37 1.00
5824 140.21 0.00 112.37 0.00
我试过这个,
SELECT *
FROM
(
SELECT Year, DRC, DISP, ID From OriginalDataTable
) AS SourceTable
PIVOT
(
max(DRC)
for Year IN ([0], [1])
) AS PivotTable;
它以 DRC 为中心,但也不以 DISP 为中心。结果是这样的(0,1是DRC值)。我明白为什么会这样,但我如何也以 DISP 为中心?
DISP Id 0 1
0.0 5808 140.21 112.37
0.0 5824 140.21 112.37
您
PIVOT
可以简单地使用CASE WHEN ...
. 通过使用GROUP BY
then useMAX(CASE
将返回您的预期结果:使用给定的示例数据执行示例:
输出:
更多解释:
上述查询返回以下结果:
为了避免
NULL
值和Id
明智的结果,我使用了每一列的GROUP BY Id
thenMAX()
,因此在最终结果中我们可以获得非NULL
值作为结果。