表 t 如下所示:
+-----+------+-------+
| key | week | value |
+-----+------+-------+
| 1 | 1 | 10 |
| 1 | 2 | 20 |
| 2 | 1 | 100 |
| 2 | 2 | 200 |
| 2 | 3 | 300 |
+-----+------+-------+
key
2具有value
存在用于week
1,2,和3中,但key
1仅具有value
为week
1和2的
我如何编写一个查询来添加一行key
1 和一个缺失的week
3,默认value
值为 0,以便结果表如下所示:
+-----+------+-------+
| key | week | value |
+-----+------+-------+
| 1 | 1 | 10 |
| 1 | 2 | 20 |
| 1 | 3 | 0 |
| 2 | 1 | 100 |
| 2 | 2 | 200 |
| 2 | 3 | 300 |
+-----+------+-------+
我尝试了交叉连接和完全外部连接(在不同的周列表中),但不知何故未能达到所需的解决方案
使用 across join
生成所有行,然后left join
引入值:
select k.key, w.week, coalesce(t.value, 0) as value
from (select distinct key from t) k cross join
(select distinct week from t) w left join
t
on t.key = k.key and t.week = w.week
order by k.key, w.week;
这使用原始表作为键和周的来源。如果您有其他包含此信息的表,则可以使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句