根据其他列日期选择列值

时间:2014-10-09 19:29:12

标签: sql sql-server reporting-services reportbuilder3.0

我有一个返回的数据集,其中包含针对不同目标的月度值。'目标具有唯一的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报表中使用此数据集,但分组对我来说无法正常工作,所以我想我是否可以通过查询实现这一点,只显示可行解决方案的数据。

实际结果数据的一个例子是

enter image description here

所以我想要整个结果集;

Year        startBalance
2014        876266.00
2015        888319.92
2016        ---------

依此类推,我理解2015年的结果集中ID为71的值为0.00,但通常会包含实际的金额,这会自动调整。

1 个答案:

答案 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]