BigQuery SQL:全连接双查询时合并日期列实现透视效果
解决BigQuery FULL JOIN后日期列合并问题
我懂你遇到的困扰啦——FULL JOIN之后两边的date列各自有空值,还多出来一个tab_2_date列,想要把日期合并成单一列,实现你要的透视效果对吧?
你可以用BigQuery的COALESCE函数来搞定这个问题,这个函数会返回参数列表里第一个非null的值,刚好适合合并两个可能为空的日期列。修改后的查询语句如下:
SELECT COALESCE(TAB_1.date, TAB_2.date) AS date, TAB_1.grob_r1, TAB_2.grob_r2 FROM ( SELECT date, grob as `grob_r1` FROM `mytab_tbl` WHERE region = "r1" ) AS TAB_1 FULL JOIN ( SELECT date, grob as `grob_r2` FROM `mytab_tbl` WHERE region = "r2" ) AS TAB_2 ON TAB_1.date = TAB_2.date
关键说明:
COALESCE(TAB_1.date, TAB_2.date):当TAB_1的date为空时,自动取TAB_2的date值;反之则取TAB_1的date,完美合并成你需要的单一日期列。- 直接选择两个子查询里的
grob_r1和grob_r2,既避免了重复列的问题,也不需要保留额外的tab_2_date。
执行这个查询后,就能得到你期望的结果:
Row | date | grob_r1 | grob_r2
1 | 2020-03-28 | null | 10
2 | 2020-03-29 | 20 | null
内容的提问来源于stack exchange,提问作者SubZeno
相关产品推荐
相关产品推荐

