今天 BigQuery 发布了一个新的很酷的函数PIVOT。
下面是它是如何工作的:
with Produce AS (
SELECT 'Kale' as product, 51 as sales, 'Q1' as quarter UNION ALL
SELECT 'Kale', 23, 'Q2' UNION ALL
SELECT 'Kale', 45, 'Q3' UNION ALL
SELECT 'Kale', 3, 'Q4' UNION ALL
SELECT 'Apple', 77, 'Q1' UNION ALL
SELECT 'Apple', 0, 'Q2' UNION ALL
SELECT 'Apple', 25, 'Q3' UNION ALL
SELECT 'Apple', 2, 'Q4')
SELECT * FROM
(SELECT * FROM Produce)
PIVOT(SUM(sales) FOR quarter IN ('Q1', 'Q2', 'Q3', 'Q4'))
+---------+----+----+----+----+
| product | Q1 | Q2 | Q3 | Q4 |
+---------+----+----+----+----+
| Apple | 77 | 0 | 25 | 2 |
| Kale | 51 | 23 | 45 | 3 |
+---------+----+----+----+----+
我的问题是,在现实世界中,我们事先不知道季度值。
我尝试使用以下方法更动态地执行此操作:
SELECT * FROM
(SELECT * FROM Produce)
PIVOT(SUM(sales) FOR quarter in (select distinct quarter from Produce))
没有成功。关于如何处理的任何线索?
这是reddit交叉帖子的链接
在下面使用 - 它动态构建枢轴列
execute immediate (
select '''select * from (select * from `project.dataset.Produce`)
pivot(sum(sales) for quarter in ("''' || string_agg(quarter, '", "') || '''"))
'''
from (select distinct quarter from `project.dataset.Produce` order by quarter)
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句