【发布时间】:2018-12-21 13:01:23
【问题描述】:
我正在尝试在 SQL 中使用 partition-by 来评估一个复杂的值
它是从过去 56 到 4 周窗口到给定一周的数据量的总和。
表格的属性:Product、Shop、Week、Category、Volume
数据:超过 150 周的数据,
目标:选择“CategoryWeekVolume”的值,即给定类别过去 56-4 周的销量总和。
尝试过:我尝试过多种组合中的 case-whens、over-partition-by,但我在 SQL 方面经验不足,并且 我不知道如何以一种聪明的方式做到这一点,而不是添加 52 列,体积从第 4 周到第 56 周。
一般情况是
t0.[WEEK]-t1.[WEEK]>4 and t0.[WEEK]-t1.[WEEK]<57 和
总和应该是每个类别。
非常感谢任何意见。
【问题讨论】:
-
示例数据、预期结果(格式为
text或 DDL 和 DML 语句)和您的尝试(您编写的实际 SQL)在这里会很有帮助。 -
sum(case when t0.[WEEK]-t1.[WEEK] > 4 and t0.[WEEK]-t1.[WEEK] < 57 then volume else null end) over(partition by category)?
标签: sql sql-server case-when partition-by