Sql server 2008 如何在SSRS查询设计器中使用带参数的IF-ELSE语句?

Sql server 2008 如何在SSRS查询设计器中使用带参数的IF-ELSE语句?,sql-server-2008,reporting-services,ssrs-2008,Sql Server 2008,Reporting Services,Ssrs 2008,我愿意实现的是: 向报告中添加一个名为@OrderBy的新参数 如果@OrderBy的值为null或空白,则使用OrderBy DaysLate DESC(表示当前功能将保持原样) 如果@OrderBy的值为1,则使用Order By RugID ASC(意味着我们将按RugID按升序订购地毯,而不是按延迟天数降序订购) 我使用这个查询(下面的屏幕截图)来实现它: 您可以使用大小写表达式。下面是一个例子: DECLARE @OrderBy VARCHAR(10) = 'Col1' DECLARE

我愿意实现的是:

  • 向报告中添加一个名为@OrderBy的新参数
  • 如果@OrderBy的值为null或空白,则使用OrderBy DaysLate DESC(表示当前功能将保持原样)
  • 如果@OrderBy的值为1,则使用Order By RugID ASC(意味着我们将按RugID按升序订购地毯,而不是按延迟天数降序订购)
  • 我使用这个查询(下面的屏幕截图)来实现它:


    您可以使用
    大小写
    表达式。下面是一个例子:

    DECLARE @OrderBy VARCHAR(10) = 'Col1'
    DECLARE @Tab TABLE (Col1 INT, Col2 INT, Col3 INT)
    INSERT @Tab VALUES
    (1,2,3),
    (3,2,1),
    (4,5,6),
    (7,8,9),
    (8,7,6)
    
    SELECT *
    FROM @Tab
    ORDER BY CASE WHEN @OrderBy = 'Col1' THEN Col1
                  WHEN @OrderBy = 'Col2' THEN Col2
                  ELSE Col3 END
    
    因此,在您的情况下,它可能看起来像:

    ... ORDER BY CASE WHEN COALESCE(@OrderBy,'') = '' THEN DaysLate DESC
                      WHEN @OrderBy = 1 THEN RugId
                      ELSE "Some Other Column" END
    
    话虽如此,使用表达式指定report tablix组中的顺序逻辑可能是一个更好的主意