Ben*_*ers 5 sql transpose unpivot google-bigquery
不知道要调用哪些函数,但转置是我能想到的最接近的事情.
我有一个BigQuery中的表,配置如下:

但我想查询一个像这样配置的表:

创建此表的SQL代码是什么样的?
谢谢!
使用表的UNION(在BigQuery中使用',')以及一些列别名:
SELECT Location, Size, Quantity
FROM (
SELECT Location, 'Small' as Size, Small as Quantity FROM [table]
), (
SELECT Location, 'Medium' as Size, Medium as Quantity FROM [table]
), (
SELECT Location, 'Large' as Size, Large as Quantity FROM [table]
)
Run Code Online (Sandbox Code Playgroud)
2021 年更新:
BigQuery 中引入了一个新的UNPIVOT 运算符。
在使用 UNPIVOT 将 Q1、Q2、Q3、Q4 旋转到销售额和季度列之前:
| 产品 | 第一季度 | Q2 | Q3 | 第四季度 |
|---|---|---|---|---|
| 羽衣甘蓝 | 51 | 23 | 45 | 3 |
| 苹果 | 77 | 0 | 25 | 2 |
使用 UNPIVOT 将 Q1、Q2、Q3、Q4 旋转到销售额和季度列后:
| 产品 | 销售量 | 四分之一 |
|---|---|---|
| 羽衣甘蓝 | 51 | 第一季度 |
| 羽衣甘蓝 | 23 | Q2 |
| 羽衣甘蓝 | 45 | Q3 |
| 羽衣甘蓝 | 3 | 第四季度 |
| 苹果 | 77 | 第一季度 |
| 苹果 | 0 | Q2 |
| 苹果 | 25 | Q3 |
| 苹果 | 2 | 第四季度 |
询问:
WITH Produce AS (
SELECT 'Kale' as product, 51 as Q1, 23 as Q2, 45 as Q3, 3 as Q4 UNION ALL
SELECT 'Apple', 77, 0, 25, 2
)
SELECT * FROM Produce
UNPIVOT(sales FOR quarter IN (Q1, Q2, Q3, Q4))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3483 次 |
| 最近记录: |