我有一个返回的数据集,其中包含针对不同目标的月度值。'目标具有唯一的ID,目标的月/日值始终相同。不同的是,有时候一个目标没有与另一个目标相同的月份的价值,因为它可能会在以后开始,我想巩固'结果并根据' First'将它们加在一起。每个目标的startBalance。示例数据集将是;
goalID monthDate startBalance
1 1/1/2014 10
1 2/1/2014 15
1 3/1/2014 22
1 4/1/2014 30
2 4/1/2014 13
2 5/1/2014 29
我想要做的是根据' First'在表格中显示这些合并(总和)值。每个目标的(最早的月/年)值。结果看起来像;
Year startBalance
2014 23
这是因为' First' goalID为1的值为10,并且' First' goalID为2的值为' 13' 我试图通过报表生成器最终在SSRS报表中使用此数据集,但分组对我来说无法正常工作,所以我想我是否可以通过查询实现这一点,只显示可行解决方案的数据。
实际结果数据的一个例子是
所以我想要整个结果集;
Year startBalance
2014 876266.00
2015 888319.92
2016 ---------
依此类推,我理解2015年的结果集中ID为71的值为0.00,但通常会包含实际的金额,这会自动调整。
答案 0 :(得分:4)
WITH balances AS (
SELECT ROW_NUMBER() OVER (PARTITION BY goalID ORDER BY monthDate ASC) n, startBalance, DATEPART(year, monthDate) [year]
FROM Goals
)
SELECT [year], SUM(startBalance) startBalance
FROM balances
WHERE n = 1
GROUP BY [year]