【发布时间】:2020-06-05 21:08:49
【问题描述】:
我有一个这样的数据表:
PeriodYearMonth Reg PartNo ComponentRemovals RunningRemovals
2019 10 G-NHVP 109-0740V01-137 1 1
2019 11 G-NHVP 109-0740V01-137 1 2
2019 12 G-NHVP 109-0740V01-137 1 3
2020 01 G-NHVP 109-0740V01-137 1 4
2019 10 OO-NSF 11-13354P 1 1
2019 09 G-NHVR 11-13354P 2 2
2019 10 OY-HMV 11-13354P 1 1
在最后一列中,我计算了每个 PartNo 和每个 Reg 的 7 个月运行总和。为此,我编写了以下代码:
/****** Find Running Component Removals ******/
SELECT [PeriodYearMonth]
,[Reg]
,[PartNo]
,[ComponentRemovals]
,sum(sum(ComponentRemovals)) over (Partition by [Reg], PartNo Order By PeriodYearMonth, PeriodYearMonth rows between 6 preceding and current row) as RunningRemovals
,[ConfirmedFailures]
, sum(sum(ConfirmedFailures)) over (Partition by [Reg], PartNo Order By PeriodYearMonth, PeriodYearMonth rows between 6 preceding and current row) as RunningFailures
FROM [RALNHVTST].[dbo].[vtRelRepComponentsRemovalsByPartNo]
Group by Reg, PartNo, ComponentRemovals, ConfirmedFailures, PeriodYearMonth
Order by PartNo
但是,由于并非所有月份都包含在 PeriodYearMonth 列中,因此结果不正确。我在网上看到过简单案例的解决方案,但对我来说棘手的部分是,我需要为每个 PartNo、每个 Reg 和每个月输入一个条目。
任何帮助将不胜感激。
问候
【问题讨论】:
-
您使用的是哪个 dbms?
-
构建并填充所有年月的表。将其左外连接到您的查询。
标签: sql sql-server date cumulative-sum