在bigquery中将多列制作为一行

时间:2019-10-04 07:29:36

标签: google-cloud-platform google-bigquery

我在bigqyery中有一个包含以下数据的表

Qualification_No 2019.2 2019.1 2018.4
100/1802/5        10     20    30
100/1811/6        15     23    10

我希望数据如下所示

Qualification_No No_of_certification
100/1802/5         10
100/1802/5         20
100/1802/5         30
100/1811/6         15
100/1811/6         23
100/1811/6         10

请帮助编写查询。

2 个答案:

答案 0 :(得分:0)

您需要使用UNION ALL

select `Qualification_No`, `2019.2` as no from table
union all
select `Qualification_No`, `2019.1` as no from table
union all
select `Qualification_No`, `2018.4` as no from table

答案 1 :(得分:0)

以下是用于BigQuery标准SQL

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '100/1802/5' Qualification_No, 10 col_2019_2, 20 col_2019_1, 30 col_2018_4 UNION ALL
  SELECT '100/1811/6', 15, 23, 10
)
SELECT Qualification_No, No_of_certification
FROM `project.dataset.table`,
UNNEST([col_2019_2, col_2019_1, col_2018_4]) No_of_certification

有结果

Row Qualification_No    No_of_certification  
1   100/1802/5          10   
2   100/1802/5          20   
3   100/1802/5          30   
4   100/1811/6          15   
5   100/1811/6          23   
6   100/1811/6          10