【发布时间】:2015-08-19 04:10:59
【问题描述】:
我对 SQL 还很陌生,所以请多多包涵。 我有一个包含日期列 (Date) 和计数列 (Count) 的表 (DataTable)
- 01/01/2015 10
- 01/02/2015 9
- 01/03/2015 12
- 01/04/2015 7
- 01/05/2015 8
- 01/06/2015 10
- 01/07/2015 10
- 01/08/2015 8
- 01/09/2015 9
- 01/10/2015 10
- 01/11/2015 11
- 2015 年 1 月 12 日 11 日
我需要创建一个新表来计算:计数、运行总计、运行财政年度、运行 12 个月。然后将这些全部添加到一个列中,并添加一个新的类别列,将这些总和按“月”、“合同日期”、“财政年度”和“12 个月到月底”分开。
- 月份显示该月的计数
- 截至日期的合同就像从开始日期到结束日期的总和
- 财政年度从 6 月开始,就像一个运行总计,直到它到达下一年的 5 月,之后即将到来的 6 月重置其计数
- 结束月份的 12 个月将前 11 个月添加到当前月份
结果是
- 01/01/2015 10 个月
- 01/02/2015 9 个月
- 01/03/2015 12 个月
- 01/04/2015 7 个月
- 01/05/2015 8 个月
- 01/06/2015 10 个月
- 01/07/2015 10 个月
- 01/08/2015 8 个月
- 01/09/2015 9 个月
- 01/10/2015 10 个月
- 01/11/2015 11 个月
- 01/12/2015 11 个月
- 01/01/2015 10 合同至今
- 01/02/2015 19 合同至今
- 01/03/2015 31 合同至今
- 01/04/2015 39 合同至今
- 01/05/2015 47 合同至今
- 01/06/2015 57 合同至今
- 01/07/2015 67 合同至今
- 01/08/2015 75 合同至今
- 01/09/2015 84 合同至今
- 01/10/2015 94 合同至今
- 01/11/2015 105 合同至今
- 01/12/2015 116 合同至今
- 等
我将如何在一个查询中对这一切进行编程(无需创建 4 个单独的表) 我需要使用 SQL Server Management Studio 2008 或 2008r2 据我所知:
SELECT * INTO DataTableFinal FROM (
SELECT Date, Count
FROM DataTable
UNION All
SELECT Date, Count = Sum (Count) OVER (ORDER BY Date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM DataTable
UNION All
SELECT Date, Count =
FROM DataTable
UNION All
SELECT Date, Count =
FROM DataTable
) as tmp
【问题讨论】:
-
您使用的是哪个数据库?
-
SQL Server 管理工作室 2008
标签: sql sql-server merge cumulative-sum