1

我正在尝试添加所有可能的年度费用,但我的案例陈述并不正确。

如果我选择 2013 年,我希望能够将 2006 年到 2013 年的所有费用相加。有没有更好的方法可以在没有 Case 语句的情况下做到这一点?还是我走错路了。

 SELECT ID, Sum(Amount) As Total
FROM ABCD
WHERE Expenses = 'Actual' AND  
      AcountType = 'Expense' AND 
      CASE WHEN 'Myselectionparameter' = 2013 
           THEN ( YearID =2013 or YearID = 2012 or YearID = 2011 or YearID = 2010 or YearID = 2009 or YearID = 2008  Or YearID = 2007 or YearID = 2006 )
      END 
GROUP BY ID
4

2 回答 2

1

那么Myselectionparameterint参数吗?

SELECT ID, Sum(Amount) As Total
FROM   abcd 
WHERE  ... 
       AND ( @Myselectionparameter IS NULL 
              OR YearID BETWEEN 2006 AND @Myselectionparameter ) 
GROUP  BY id 
于 2013-07-05T15:37:01.980 回答
1

假设您的问题是关于参数的,在这种情况下,您在参数名称之前使用 @ 。

那么你有一个特定的答案......

SELECT ID, Sum(Amount) As Total
FROM ABCD
WHERE Expenses = 'Actual' AND  
      AcountType = 'Expense' AND 
      (@Myselectionparameter = 2013 AND YearID  BETWEEN 2006 AND 2013)
      END 
GROUP BY ID

如果参数说 2011 怎么办?你想从 2006 年到 2011 年吗?在这种情况下,你有一般的答案:

SELECT ID, Sum(Amount) As Total
FROM ABCD
WHERE Expenses = 'Actual' AND  
      AcountType = 'Expense' AND 
      YearID  BETWEEN 2006 AND @Myselectionparameter
GROUP BY ID
于 2013-07-05T15:43:45.330 回答