【发布时间】:2019-02-13 23:20:37
【问题描述】:
我正在尝试根据数量创建机车车辆计数。每次有实际库存计数(TypeOfMovement = 3)时,计数都应重置。这应该适用于每个 ArticleNo 并按日期分组。
我可以获得一个正在运行的库存计数(图像中
解决方案应在 SSMS 中运行。或者,可以运行 python 解决方案。
到目前为止我的查询是:
WITH a
AS
(SELECT
DateOfMovement, Quantity, ArticleNo, TypeOfChange,
CASE
WHEN TypeOfChange = 3 Then 0
ELSE Quantity
END AS RunningTotal
FROM Stock_Table
Group by DateOfMovement, Quantity, ArticleNo, TypeOfChange)
SELECT
*
,CASE
WHEN TypeOfChange= 3 THEN Quantity
ELSE Sum(Quantity) OVER(ORDER BY ArticleNo, DateOfMovement)
END AS ResetRunningTotal
FROM a
WHEre ArticleNo = 9410
group by DateOfMovement, ArticleNo, Quantity, TypeOfChange, RunningTotal
order by DateOfMovement asc
结果表的图像是..
【问题讨论】:
-
您使用的是
GROUP BY,没有任何聚合功能。所以RunningTotal的值来自组中的随机行。 -
我可能应该清理掉那个部分,因为我创建的 RunningTotal 专栏现在对我没有任何帮助 - 因为我一直在尝试不同的东西,所以这部分有点混乱。如果重置滚动总和(例如在第 123 行之后),ResetRunningTotal 接近我想要的值
-
什么数据库?不同的 DBMS 引擎以不同的方式实现 SQL 语言的各个部分,尤其是在聚合和分析函数方面。
-
它在 SSMS 中,将使用 T-SQL
-
SSMS 基本上是无关紧要的,它只是一个查询工具。
标签: python sql sql-server tsql count