比较每个月并为增量添加行

问题描述

我需要你的帮助,我无法构建正确的解决方案。

我有这张桌子:

日期 单位 货币
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;