hhh*_*hh_ 6 sql amazon-redshift
我有两个相似的表,我试图将它们加入一个联盟,然后可能进行分组。我希望在表不重叠的地方添加一列 null 或 0。
SELECT count(traffic_volume_1) as traffic_volume_1,
traffic_source,
timestamp
FROM table_1
UNION ALL
count(traffic_volume_2) as traffic_volume_2,
traffic_source,
timestamp
FROM table_2
...?
Run Code Online (Sandbox Code Playgroud)
我正在寻找如下所示的回报:
traffic_volume_1, traffic_volume_2, timestamp, traffic_source
77777 , 0 , 2018-02-09, US
0 , 928320 , 2018-02-09, EU
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
如果您在运行查询之前知道需要的额外列数,答案很简单:您不需要 UNION,而是在 FROM 中的单独子句中对每个表执行查询,并在 Traffic_source 和时间戳上加入它们。
但是,如果您在运行查询之前不知道将有多少列,那么您需要的是交叉表或数据透视查询。
数据透视查询将不同的行值转换为额外的列。您可以直观地将其视为查询记录集旋转 90 度;引擎不会生成新行,而是生成新列。
数据透视查询语法是 SQL 中特定于平台的,因为它是非标准的。不确定您使用的是什么平台,但请检查是否支持交叉表/数据透视查询。
| 归档时间: |
|
| 查看次数: |
30262 次 |
| 最近记录: |