SQL 将时间序列数据合并到单个 'date' 列的模式

SQL Pattern to merge time series data into a single 'date' column

我将一些住房数据导入到 BigQuery 中,它看起来像这样 -

zip_code | date_1 | date_2 | date_3 ...

12345 | 01/01/00 | 01/08/00 | 01/15/00 ....

我想在BQ中把它改成这样:

zip_code |日期

12345 | 01/01/00 12345 | 01/08/00 12345 | 01/15/00 ....

有人可以帮忙提供一个 SQL 模式来简单地进行这种转换吗?

尝试使用逆轴运算符如下:

with sample_data as (
    select 12345 as zip_code, '01/01/00' as date_1, '01/08/00' as date_2, '01/15/00' as date_3
)

select up.zip_code, up.date
from sample_data
unpivot(date for col_name in (date_1, date_2, date_3)) up

这将产生如下数据:

有关 unpivot 运算符的更多信息,请查看此处的文档: https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#unpivot_operator