0

我正在尝试在 Alteryx 中创建以下逻辑,并且数据来自 Exasol 数据库。

“Sum_Qty_28_days”列应总结过去 28 天内同一文章的“Qty”列的值。

我的示例数据如下所示:

在此处输入图像描述

我想要以下输出:

在此处输入图像描述

例如,“article” = 'A' 和 date = ''2019-10-8” 的“Sum_Qty_28_days”值为 8,因为它汇总了与日期相关的“Qty”值(在过去 28 天内出现),即:2019 -09-15 2019-10-05 2019-10-08 “文章” = 'A'。

这可能使用 SQL 窗口函数吗?我尝试了以下代码:

SUM("Qty") OVER (PARTITION BY "article", date_trunc('month',"Date")
             ORDER BY "Date")

但是,这远远不是我需要的。它总结了同一个月内日期的数量。但是,我需要总结过去 28 天的数量。

提前致谢。

4

2 回答 2

1

如果您的 RDBMS 不支持range框架,另一种解决方案是使用内联子查询:

select 
    t.*,
    (
        select sum(t1.qty) 
        from mytable t1 
        where 
            t1.article = t.article
            and t1.date between t.date - interval 28 days and t.date
    ) sum_qty_28_days
from mytable t
于 2019-12-09T13:10:05.260 回答
1

是的,这可以使用标准 SQL 和在许多数据库中实现。但是,这不适用于所有数据库:

select t.*,
       sum(qty) over (partition by article
                      order by date
                      range between interval '27 day' preceding and current row
                     ) as sum_qty_28_days
from t;
于 2019-12-09T12:57:55.317 回答