【发布时间】:2019-01-09 14:40:37
【问题描述】:
我需要计算每个季度的总保费。但是我的数据是按日期细分的。
所以我需要基于年份和季度的第一行显示值,但是如果后面的行具有相同的Year 和Quarter,那么值应该是 0。
这就是现在的样子:
但我需要这样:
使用虚拟数据查询:
declare @TempTable1 table (ID int, Date date, PolicyNumber varchar(100), Premium money)
insert into @TempTable1
values (1, '2018-01-01', 'Policy1', 100),
(2, '2018-02-08', 'Policy2', 200),
(3, '2018-04-15', 'Policy3', 300),
(4, '2018-05-31', 'Policy4', 150),
(5, '2018-07-10', 'Policy5', 250),
(6, '2018-11-23', 'Policy6', 350),
(7, '2018-12-05', 'Policy7', 330),
(8, '2019-01-09', 'Policy8', 140),
(9, '2019-06-18', 'Policy9', 225),
(10, '2019-06-28', 'Policy10', 145)
SELECT
ID,
Date,
PolicyNumber,
YEAR(date) AS Year,
DATEPART(qq, date) AS Quarter,
Premium,
SUM(premium) OVER (ORDER BY YEAR(date), DATEPART(qq, date)) AS RunningTotal
FROM
@TempTable1
是否有可能在同一个SELECT 语句中实现这一点?
谢谢
【问题讨论】:
标签: sql-server tsql sql-server-2012