sql - 对每个月的字段进行累计和动态求和

标签 sql sql-server sql-server-2008 tsql

我有一个表,其中包含大约 50,000 条信息记录,这些记录已设置为可追溯至本财政年度开始时。

就目前情况而言,我自上个月以来就没有更新此表,因此目前其中的数据假设我们仍在回溯至 2011 年 4 月 1 日。

注意(当我刷新数据时,那里只会有2012年4月的数据,因为我们现在是4月,然后在5月会有2012年4月和2012年5月等等......)

每条记录有我关心的 4 列:

Department,
Incident date,
month,
year,
reduced

月份和年份列都是从事件日期字段生成的,格式如下:

2011-06-29 00:00:00.000

我需要对每个部门,以累积的方式对减少的金额进行求和。

例如,2011 年 4 月将是我目前掌握的最早的月/年数据,我想知道 4 月份每个部门的总减少量。

然后对于五月,我想要四月和五月的组合,对于六月,我需要四月、五月、六月等等...

是否有一种智能方法可以做到这一点,以便当我将数据重新导入到该表中时,它会意识到现在只有一个月,并且该年份已更新,并且从现在到下个月仅显示四月份的总和(减少)

最佳答案

以下命令将返回按 DepartmentYearMonth 分组的累计总数。如果您在刷新时清除上一纳税年度的数据,则可以省略 WHERE 子句。

SELECT      T1.[Year],
            T1.[Month],
            T1.Department,
            SUM(T2.Reduced) ReducedTotals
FROM        [TABLENAME] T1
INNER JOIN  [TABLENAME] T2 ON ( T1.Department = T2.Department AND T1.IncidentDate >= T2.IncidentDate )
WHERE       T1.IncidentDate >= '2012-04-01'
GROUP BY    T1.[Year],
            T1.[Month],
            T1.Department
ORDER BY    T1.[Year],
            T1.[Month],
            T1.Department

关于sql - 对每个月的字段进行累计和动态求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352800/

相关文章:

sql - 如何更改 SQL Server 中的自动增量语句?

SQL Server 查询需要 3 分 40 秒。如何改善执行时间?

sql-server-2008 - 如何在 MS SQL Server 2008 中启用远程调试?

mysql - 将 # 个结果合并在一起

mysql - 连接列中有空格的表

mysql - 如何使用 SQL join 从闭包表中提取子 ID 和名称

sql-server - 从 IIS 到 SQL 服务器的 Kerberos 双跳委派(使用 django)

sql-server - 使用 INSERT 查询的结果更新

Sqlite 查询 - 我如何选择前任?

sql-server-2008 - 无法解决等于操作中 "SQL_Latin1_General_CP1_CI_AS"和 "Latin1_General_CI_AI"之间的排序规则冲突