【问题标题】:Compare each month and add rows for deltas比较每个月并为增量添加行
【发布时间】:2021-05-21 06:42:29
【问题描述】:

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

我有这张桌子:

Date Unit Currency
01.02.2021 TSS USD
01.03.2021 TSS USD
01.04.2021 TSS USD
01.02.2021 UMM USD
01.02.2021 FDS USD
01.04.2021 FDS USD
01.02.2021 POF USD

与第一个月 01.02.2021 相比,我需要为每个月的每个缺失的 UNIT 填充行,例如 UNIT "TSS"。

预期结果:

Date Unit Currency
01.02.2021 TSS USD
01.03.2021 TSS USD
01.04.2021 TSS USD
01.02.2021 UMM USD
01.03.2021 UMM USD
01.04.2021 UMM USD
01.02.2021 FDS USD
01.03.2021 FDS USD
01.04.2021 FDS USD
01.02.2021 POF USD
01.03.2021 POF USD
01.04.2021 POF USD

所有比较都应与第一个月 01.02.2021

【问题讨论】:

  • 一种方法是交叉连接。获取单位的所有不同值并将其与日期的所有不同值交叉连接并添加“USD”作为常数。但我猜你的情况需要更多的复杂性。
  • 您能否添加您的表架构和数据脚本以支持您获得答案?

标签: sql sql-server tsql compare


【解决方案1】:

您的结果包含第一列 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;

【讨论】:

    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多