如何在BigQuery SQL中将多日期列转为带序号的多行记录?
解决方案:BigQuery实现日期列转行
针对你需要将first_date和second_date拆分为多行并标记序号的需求,有两种常用的实现方式:
方法一:使用UNION ALL
这种方式逻辑直观,适合仅需拆分少量列的场景:
SELECT id, ga_id, first_date AS dates, 1 AS rang FROM your_table_name UNION ALL SELECT id, ga_id, second_date AS dates, 2 AS rang FROM your_table_name ORDER BY id, ga_id, rang;
方法二:使用UNPIVOT操作
BigQuery支持UNPIVOT语法,适合需要拆分多列的场景,代码更简洁:
SELECT id, ga_id, dates, rang FROM your_table_name UNPIVOT ( dates FOR rang IN ( first_date AS 1, second_date AS 2 ) ) ORDER BY id, ga_id, rang;
说明
- 替换
your_table_name为你的实际表名 - 两种方法都会输出你需要的结果格式,
rang字段分别标记原始日期列的顺序 ORDER BY子句用于保证结果按预期排序,可根据需求调整
内容的提问来源于stack exchange,提问作者Mike Silver
相关产品推荐
相关产品推荐

