我有一个表格,其中列出了每个城市每年的总销售额,但我的表格中没有某些年份城市的销售额,我们也看不到这些信息。
现在我想准备一个结果集,表示该年所有城市的销售额,并显示值 0 的一年内没有销售额的城市
城市表
CityKey | 城市 |
---|---|
1 | 纽约 |
2 | 达拉斯 |
3 | 旧金山 |
交易表
城市 | 总销售额 | 年 |
---|---|---|
纽约 | 100 | 2019 |
达拉斯 | 50 | 2019 |
旧金山 | 100 | 2019 |
纽约 | 222 | 2020 |
输出 - 每个城市的交易:
城市 | 总销售额 | 年 |
---|---|---|
纽约 | 100 | 2019 |
达拉斯 | 50 | 2019 |
旧金山 | 100 | 2019 |
纽约 | 222 | 2020 |
达拉斯 | 0 | 2020 |
旧金山 | 0 | 2020 |
答案 0 :(得分:2)
使用 cross join
生成所有行,然后使用 left join
引入现有数据:
select c.city, y.year, coalesce(t.total_sales, 0)
from cities c cross join
(select distinct year from transactions) y left join
transactions t
on t.city = c.city and t.year = y.year;