我有一个表,其中的列categoryA,categoryB,year,month,week和quantity对应于特定值。
我想找到该特定类别组合过去12周的quantity值的总和。
我尝试了下面的代码
查询1
select
categoryA
, categoryB
, year
, month
, week
, SUM(quantity) OVER
PARTITION BY(categoryA, categoryB
ORDER BY categoryA, categoryB, year, month, week rows BETWEEN 12 PRECEDING AND 1 PRECEDING)
FROM TABLE1
但是问题是,本周可能会有间隙,例如,2020年在第20周可能没有行,在这种情况下,该行的数量必须被视为0。
我尝试生成必须对每行相加的[[quantity之间的星期范围,如下所示:
查询2
SELECT year,week, month, categoryA, categoryB,
CASE WHEN week> 12 THEN week- 12
WHEN week= 1 THEN 0
ELSE 1 END AS startWeek1,
CASE WHEN week<> 1 THEN week- 1
WHEN week= 1 THEN 0 END AS endWeek1,
CASE WHEN week<> 1 THEN year
ELSE 0 END AS startYear,
CASE WHEN week> 12 THEN 0
ELSE year- 1 END AS EndYear,
CASE WHEN week> 12 THEN 0
ELSE datepart(week, DATEFROMPARTS(year -1, 12, 31)) - (12 - week) END AS startWeek2,
CASE WHEN week > 12 THEN 0
ELSE datepart(week, DATEFROMPARTS(year-1, 12, 31)) END AS endWeek2
但是现在我必须以某种方式比较我的[[query 1中的最后12行是否落在当前行中指定的星期和年的范围内]
请注意,我能够通过使用UDF来实现该解决方案,但是由于我不得不为每一行都调用它,因此性能太差了。
我的表中的数据如下:year month week categoryA categoryB quantity
2020 1 1 steel white 2
2020 1 2 steel white 4
2020 2 5 steel white 5
2020 2 6 steel white 1
2020 10 40 steel white 1
2020 10 41 steel white 10
预期结果:
year month week categoryA categoryB quantity lastTwelveWeeksQuantity 2020 1 1 steel white 2 0 2020 1 2 steel white 4 2 2020 2 5 steel white 5 6 2020 2 6 steel white 1 11 2020 10 40 steel white 1 0 2020 10 41 steel white 10 1
编辑另一个跨度跨年的用例
year month week categoryA categoryB quantity
2019 12 43 steel white 2
2020 1 1 steel white 2
2020 1 2 steel white 4
2020 2 5 steel white 5
2020 2 6 steel white 1
2020 10 40 steel white 1
2020 10 41 steel white 10
预期结果:year month week categoryA categoryB quantity lastTwelveWeeksQuantity
2019 12 43 steel white 2 0
2020 1 1 steel white 2 2
2020 1 2 steel white 4 4(considering quantity from 2019 as it falls in range for last 12 weeks i,e week 1 in 2020 and week 53 to 43 in 2019)
2020 2 5 steel white 5 6
2020 2 6 steel white 1 11
2020 10 40 steel white 1 0
2020 10 41 steel white 10 1
我有一个表,其中包含列categoryA,categoryB,年,月,周以及与特定值相对应的数量。我想找到该过去12周的数量值总和...