Redshift SQL:将行交换并聚合到列

Redshift SQL: swap and aggregate row to column

这是 Redshift 中的 table T1:

我正在尝试创建一个查询来以下列方式表示它:

构建查询的最佳方式是什么。输入 table 是在另一个 SQL 查询中动态创建的,该查询的结果集不会很小——比如 400 到 500 行/3 列。

非常感谢任何提示、建议或解决方案。

您可以使用条件聚合:

select item,
       sum(case when period = 'Q1' then counts end) as Q1,
       sum(case when period = 'Q2' then counts end) as Q2,
       sum(case when period = 'Q3' then counts end) as Q3
from t
group by item;

如果您想要行总计,只需在 Q3 之后添加 sum(counts)