2013-03-19 212 views
0

我想知道如何计算SSRS中设置的年份参数的总数。选择一个特定年份时,前几年的先前计数将与当前计数相加。在我的存储过程中使用@year参数之前,它在SSRS中工作,但是这次我想尝试对其进行硬编码,然后在SSRS中只有一个年份参数。计算不同年份的总数

这里是我的代码示例,我要和目前的工作:

select 
sum(MITotal.Count) as 'Yearly Count', 
year(c_date) as 'year' 

from 
(select 
    count(*) as Count, 
    pol1.C_STATE, 
    month(pol1.c_Date) as Month, 
    year(pol1.c_ate) as Year, 
    left(datename(mm, C_Date), 3) + ' ' + cast(year(C_Date) as char(4)) as MonthYear 
    from contract pol1 
    where 
     pol1.C_STATE='wa' 
    group by pol1.C_STATE,month(pol1.c_Date),year(pol1.c_Date), left(datename(mm, C_Date), 3) + ' ' + cast(year(C_Date) as char(4))) MITotal 
    group by MITotal.Year 

将返回:

2 2009 
5 2010 
6 2011 

我怎么会去添加到代码,以便每当,我选择将2010年作为参数年,它将增加5 + 2或2011年,并且将增加5 + 6 + 2作为总计。任何指针将不胜感激。

回答

2

在CASE语句总和基础上,今年参数,像这样:

SUM(CASE WHEN Year(c_Date) <= @Year THEN MITotal.Count END) AS 'Historical Total' 
+0

谢谢,我会尝试一下! – user2146212 2013-03-19 02:20:42

+0

是否有任何其他的方式做不使用@Year作为我的sp里面的参数。 – user2146212 2013-03-19 02:38:25

+0

这取决于年份是否可计算。如果用户选择年份,则无法选择,您必须将其作为参数传递。如果它类似于“去年之前的每年”,那么您可以在存储过程中轻松地进行计算。 – 2013-03-19 04:47:51