sql - BigQuery 上的 SQL:使用完全连接的双重选择时合并数据透视列
问题描述
给定以下查询:
SELECT TAB_1.*, TAB_2.* EXCEPT(date), TAB_2.date AS tab_2_date 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
我得到这个结果:
Row | date | grob_r1 | grob_r2 | tab_2_date
=========================================================
1 | null | null | 10 | 2020-03-28
2 | 2020-03-29 | 20 | null | null
我看到的问题是我没有得到第二个选择填充的 col 日期。我想摆脱tab_2_date
和巩固一个独特的date
专栏,基本上充当一个支点。
期望的输出:
Row | date | grob_r1 | grob_r2
==========================================
1 | 2020-03-28 | null | 10
2 | 2020-03-29 | 20 | null
注意:我不能date
在查询中直接使用相同的名称,因为 BigQuery 不支持重复的列名。
解决方案
WITH aux AS (
SELECT date, region, grob FROM `mytab_tbl` WHERE region IN ('r1', 'r2')
)
SELECT
date
, MAX(IF(region = 'r1', grob, NULL)) AS grob_r1
, MAX(IF(region = 'r2', grob, NULL)) AS grob_r2
FROM aux
GROUP BY 1
推荐阅读
- javascript - React-Native AsyncStorage:TypeError:无法读取未定义的属性“setItem”
- php - Laravel array_merge():参数 #2 不是 ServiceProvider.php 中的数组
- http - 为什么 Elastic Cloud 提供专用端口 (9243) 而不是仅使用默认端口 (443)?
- python - 如何使用 python 在 Maya 2018 中将着色器覆盖添加到渲染层
- javascript - Vue js / Nodejs Java Script 导出 docx 文件
- python - 使用 Postman 进行 Django Rest Framework 令牌身份验证
- java - 向 layout-ldrtl (RTL) 添加布局会导致应用崩溃
- symfony - symfony 4.2 behat 测试内存泄漏
- xamarin.forms - Mac 上 Xamarin 构建代理的最小 SSD 大小
- json - 在 Gatsby 中使用 graphQL 查询多个 JSON 文件