【发布时间】:2014-08-22 06:04:48
【问题描述】:
我正在使用 SSRS 和 SSMS 2008 R2。我有 2 份报告,用户希望将它们合并为 1 份报告,并且可以选择 获取 2013 年或 2014 年数据的日期。两个报告中的所有数据集都相同,除了一个 2013 年组与 2014 年组客户的每个报告中的数据集具有不同的硬编码 Where 子句值。 我想我可以在 Where 子句中做一个 CASE 语句来根据 @Startdate 参数选择硬编码的 2013 组或 2014 组, 但这不起作用,关于如何做到这一点的任何想法?
这是 2013 年查询和 2014 年查询,即 Where 子句是 2 份报告之间的唯一区别:
SELECT [FISCAL YEAR]
,COUNT(*) AS EXPECTED
,SUM(Amount) AS Total
FROM dbo.Table1 T1
INNER JOIN dbo.Table2 T2
ON T1.primarykey = T2.primarykey
WHERE Field1 IN (
5555
,6666
)
AND Field2 IN (
2222
,3333
)
AND YEAR(T1.DATE) = YEAR(@StartDate)
AND T1.AMOUNT >= 25000
AND T1.DESCRIPTION IN (
'The Campaign - YYY - 2011-2015'
,'The Campaign - ZZZ - 2011-2015'
,'2013 AAA Goal'
,'2013 BBB Goal'
,'2013 CCC Goal'
,'2013 DDD Goal'
,'2013 EEE'
,'2013 FFF'
)
GROUP BY RIGHT(CONVERT(VARCHAR, T1.DATE, 1), 2)
SELECT [FISCAL YEAR]
,COUNT(*) AS EXPECTED
,SUM(Amount) AS Total
FROM dbo.Table1 T1
INNER JOIN dbo.Table2 T2
ON T1.primarykey = T2.primarykey
WHERE Field1 IN (
5555
,6666
)
AND Field2 IN (
2222
,3333
)
AND YEAR(T1.DATE) = YEAR(@StartDate)
AND T1.AMOUNT >= 25000
AND T1.DESCRIPTION IN (
'The Campaign - YYY - 2011-2015'
,'The Campaign - ZZZ - 2011-2015'
,'2014 AAA Goal'
,'2014 BBB Goal'
,'2014 CCC Goal'
,'2014 DDD Goal'
,'2014 EEE'
,'2014 FFF'
,'2014 GGG'
,'2014 HHH'
,'2014 JJJ'
,'2014 LLL'
)
GROUP BY RIGHT(CONVERT(VARCHAR, T1.DATE, 1), 2)
【问题讨论】:
标签: sql-server-2008