根据其他列日期选择列值
问题描述:
我有一个数据集被返回,每个值都有不同的“目标”。目标具有唯一的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报告最终使用该数据集生成器,但分组不能正常工作,所以我想如果我可以通过我的查询来实现这一点,并只显示数据,这将是一个可行的解决方案。
实际结果数据的一个例子是
所以我想整个结果集是;
Year startBalance
2014 876266.00
2015 888319.92
2016 ---------
等,我在那个结果理解为2015年确定存在的0.00 ID 71的值,但通常将包含实际的美元数量,这将自动地调整。
答
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]
感谢您的回复,不是这个查询总结了整个年份的所有startBalance值吗?我只想求出每个goalID的最早值,例如goalID 1的1/1/2014值与goalID 2的4/1/2014值在该实例中拿出23,我相信你的查询按年份总结所有的值,我可能是错的,但这就是我的测试似乎显示。再次感谢您的帮助! – 2014-10-09 19:59:13
我刚刚用上面的数据创建了一个表格,运行了我发布的查询,结果是Year:2014,startBalance:23.不知道它出错的位置。 – Namrehs 2014-10-09 20:04:33
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