gpt4 book ai didi

sql - 在 SQL 中计算移动 4 行的总和

转载 作者:行者123 更新时间:2023-12-02 06:31:37 26 4
gpt4 key购买 nike

我有以下数据。

   WM_Week  POS_Store_Count POS_Qty POS_Sales   POS_Cost
------ --------------- ------ -------- --------
201541 3965 77722 153904.67 102593.04
201542 3952 77866 154219.66 102783.12
201543 3951 70690 139967.06 94724.60
201544 3958 70773 140131.41 95543.55
201545 3958 76623 151739.31 103441.05
201546 3956 73236 145016.54 98868.60
201547 3939 64317 127368.62 86827.95
201548 3927 60762 120309.32 82028.70

我需要编写一个 SQL 查询来获取最近四个星期的数据,以及以下每一列的最后四个星期的总和:POS_Store_Count,POS_Qty, POS_SalesPOS_Cost

例如,如果我想要 201548 的数据,它将包含 201548、201547、201546 和 201545 的数据。

201547 的总和将包含 201547、201546、201545 和 201544。

查询成功运行后应返回 4 行。

我将如何制定递归查询来执行此操作?有没有比递归更容易做到这一点?

编辑:版本为 Azure Sql DW,版本号为 12.0.2000。Edit2:应该返回的四行将包含其自身的列总和,并且是前三周。

例如,如果我想要 201548 的数字,它将返回以下内容:

WM_Week POS_Store_Count POS_Qty  POS_Sales   POS_Cost
------ --------------- ------- -------- --------
201548 15780 274938 544433.79 371166.3

这是来自 201548201547201546201545< 的四个(非标识)列的总和.

最佳答案

很确定这会得到你想要的。我在订购数据后使用交叉应用来应用 SUMS

Create  Table #WeeklyData (WM_Week Int, POS_Store_Count Int, POS_Qty Int, POS_Sales Money, POS_Cost Money)

Insert #WeeklyData Values
(201541,3965,77722,153904.67,102593.04),
(201542,3952,77866,154219.66,102783.12),
(201543,3951,70690,139967.06,94724.6),
(201544,3958,70773,140131.41,95543.55),
(201545,3958,76623,151739.31,103441.05),
(201546,3956,73236,145016.54,98868.6),
(201547,3939,64317,127368.62,86827.95),
(201548,3927,60762,120309.32,82028.7)

DECLARE @StartWeek INT = 201548;
WITH cte AS
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY [WM_Week] DESC) rn
FROM #WeeklyData
WHERE WM_Week BETWEEN @StartWeek - 9 AND @StartWeek
)
SELECT *
FROM cte c1
CROSS APPLY (SELECT SUM(POS_Store_Count) POS_Store_Count_SUM,
SUM(POS_Qty) POS_Qty_SUM,
SUM(POS_Sales) POS_Sales_SUM,
SUM(POS_Cost) POS_Cost_SUM
FROM cte c2
WHERE c2.rn BETWEEN c1.rn AND (c1.rn + 3)
) ca
WHERE c1.rn <= 4

关于sql - 在 SQL 中计算移动 4 行的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34622013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com