【问题标题】:Self Join and aggregate based on specific dates (redshift)基于特定日期的自我加入和聚合(红移)
【发布时间】:2020-03-04 14:13:36
【问题描述】:

大家好,

我正在尝试进行自联接并以格式获取数据,但是,我得到的数据不正确。对于每个evt_start 日期,我需要根据art_nositemanufact 总结qtyevt_start 日期应介于 evt_startdate2 之间。

select sum(a.qty) as over_all_qty,
b.art_no,b.site,b.evt,b.evt_start,a.manufact

from wo_sup a

left join wo_sup b on a.site = b.site
and a.art_no = b.art_no
and a.manufact = b.manufact
and a.evt_start = b.evt_start

where a.evt_start between b.evt_start and b.date2

group by 

b.art_no,b.site,b.evt,b.evt_start,a.manufact

【问题讨论】:

标签: sql amazon-redshift


【解决方案1】:

除一条记录外,您的 evt_start 日期(均为 2020 年)小于 date2 列。

所以,要么您的数据集不正确,要么您想要做的是:

a.evt_start between b.date2 and b.evt_start

因此,更改您的数据集或“介于”条件,您将获得答案中的所有 4 行。

【讨论】:

    【解决方案2】:

    您的where 子句正在撤消left join。这在 Redshift 中有效吗?

    left join
    wo_sup b
           on a.site = b.site and
              a.art_no = b.art_no and
              a.manufact = b.manufact and
              a.evt_start = b.evt_start and
              a.evt_start between b.evt_start and b.date2
    

    【讨论】:

    • 我试过这个,但我在输出中只得到一个制造数据。其余的没有出现。
    猜你喜欢
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多