问题描述
我需要你的帮助,我无法构建正确的解决方案。
我有这张桌子:
日期 | 单位 | 货币 |
---|---|---|
01.02.2021 | TSS | 美元 |
01.03.2021 | TSS | 美元 |
01.04.2021 | TSS | 美元 |
01.02.2021 | UMM | 美元 |
01.02.2021 | FDS | 美元 |
01.04.2021 | FDS | 美元 |
01.02.2021 | POF | 美元 |
与第一个月 01.02.2021 相比,我需要为每个月的每个缺失的 UNIT 填充行,例如 UNIT“TSS”。
预期结果:
日期 | 单位 | 货币 |
---|---|---|
01.02.2021 | TSS | 美元 |
01.03.2021 | TSS | 美元 |
01.04.2021 | TSS | 美元 |
01.02.2021 | UMM | 美元 |
01.03.2021 | UMM | 美元 |
01.04.2021 | UMM | 美元 |
01.02.2021 | FDS | 美元 |
01.03.2021 | FDS | 美元 |
01.04.2021 | FDS | 美元 |
01.02.2021 | POF | 美元 |
01.03.2021 | POF | 美元 |
01.04.2021 | POF | 美元 |
所有比较都应与第一个月 01.02.2021
解决方法
您的结果包含第一列 date
的所有组合以及其他两列 unit
/currency
的所有组合。使用cross join
:
select d.date,uc.unit,uc.currency
from (select distinct date from t) d cross join
(select distinct unit,currency from t) uc
order by uc.unit,uc.currency,d.date;