【发布时间】:2020-02-26 14:36:47
【问题描述】:
我有桌子
id year quarter total
1 2016 1 100
1 2016 2 200
1 2016 3 300
1 2016 4 400
2 2016 1 100
2 2016 2 200
我想得到输出:
id year total1 total2 total3 total4
1 2016 100 200 300 400
2 2016 100 200
我试过了
SELECT year,
"1" AS total1,
"2" AS total2,
"3" AS total3,
"4" AS total4
FROM (SELECT
*
FROM mytable
PIVOT (... FOR quarter IN (1, 2, 3, 4))
where year=2016) a
;
【问题讨论】:
-
这是一个需要使用
PIVOT运算符的家庭作业吗?这不是我要走的路(我会像发布的答案一样使用条件聚合),但如果你必须使用PIVOT,你必须使用PIVOT。 -
对不起,我不想要 max 或 sum 任何值。我只是想将每个季度的总计值作为新列输出
-
您不了解代码的工作原理。在关闭它之前尝试一下。
-
如果您使用
max(total)或sum(total)而不是点,则您的查询 works。 Pivot 需要聚合,但在这种情况下,它将为每个id创建行。问题是如果同一季度有两行具有相同 ID,该怎么办。您想要总和、最大值还是单独的行?