如何在BigQuery中解开?

Ben*_*ers 5 sql transpose unpivot google-bigquery

不知道要调用哪些函数,但转置是我能想到的最接近的事情.

我有一个BigQuery中的表,配置如下: 在此输入图像描述

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

在此输入图像描述

创建此表的SQL代码是什么样的?

谢谢!

Fel*_*ffa 8

使用表的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)


Ser*_*ron 5

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)

  • 为什么这被否决了?我可以这样解决我的问题。 (2认同)
  • 这现在应该是公认的答案 (2认同)