ssrs if exists then else表达式的默认参数值

时间:2018-01-24 09:37:36

标签: sql-server stored-procedures reporting-services

我需要编写一个ssrs表达式来检查参数是否存在,如果不存在则应该选择另一个值。

我的SSRS报告中有一个Year参数。 year参数应使用当前年份(= Year(Now()))作为默认值。问题是,1月刚刚开始,我们还没有2018年的数据,所以它会返回一个错误。如何编写一个默认值表达式,如果它存在,则采用当前年份,否则是前一年?

先谢谢你们

1 个答案:

答案 0 :(得分:0)

如果当前年份的数据不可用,则不清楚您希望将其设置为默认值。

此解决方案测试数据是否存在,然后如果数据不存在则会提供最新数据。使用这种方法很容易返回任何你喜欢的东西。

我刚刚创建了一个用于测试的表变量,显然将其换成了真正的表。

-- uncomment @myParameter declaration for testing
--DECLARE @myParameter int = year(getdate())

-- Just some data to test against.
DECLARE @myData TABLE (PeriodID int, SomeValue int)
    INSERT INTO @myData VALUES (2015, 8), (2016, 10), (2017, 15)

IF Exists(SELECT * FROM @myData WHERE PeriodID = @myParameter)
    BEGIN
       SELECT @myParameter as resultPeriodID
    END
ELSE
    BEGIN
       SELECT MAX(PeriodID) as resultPeriodID FROM @myData
    END