2014-10-09 79 views
2

我有一个数据集被返回,每个值都有不同的“目标”。目标具有唯一的ID,并且月份/日期值对于目标始终是相同的。不同之处在于,一个目标与其他目标没有相同月份的价值,因为它可能会在稍后的日期开始,我想'巩固'结果并基于'First'startBalance for每个目标。示例数据集将是;根据其他列日期选择列值

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 

我想要做的是基于每个目标的“第一”(最早的月/年)值的表显示这些合并(相加)值。结果看起来像;

Year  startBalance 
2014  23 

这是因为“第一”为1 goalID值是10,“第一”为2 goalID值是“13” 我试图通过报表的SSRS报告最终使用该数据集生成器,但分组不能正常工作,所以我想如果我可以通过我的查询来实现这一点,并只显示数据,这将是一个可行的解决方案。

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

enter image description here

所以我想整个结果集是;

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

等,我在那个结果理解为2015年确定存在的0.00 ID 71的值,但通常将包含实际的美元数量,这将自动地调整。

回答

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] 
+0

感谢您的回复,不是这个查询总结了整个年份的所有startBalance值吗?我只想求出每个goalID的最早值,例如goalID 1的1/1/2014值与goalID 2的4/1/2014值在该实例中拿出23,我相信你的查询按年份总结所有的值,我可能是错的,但这就是我的测试似乎显示。再次感谢您的帮助! – 2014-10-09 19:59:13

+0

我刚刚用上面的数据创建了一个表格,运行了我发布的查询,结果是Year:2014,startBalance:23.不知道它出错的位置。 – Namrehs 2014-10-09 20:04:33

+0

http://stackoverflow.com/questions/26258815/adding-first-values-grouped-by-id-from-record-set-report-builder-3-0/26272997?noredirect=1#comment41229517_26272997 – Manoj 2014-10-10 06:03:32