如何在带有参数的 s-s-rS 查询设计器中使用 IF ELSE 语句?

Posted

技术标签:

【中文标题】如何在带有参数的 s-s-rS 查询设计器中使用 IF ELSE 语句?【英文标题】:How to use IF ELSE Statement in s-s-rS Query Designer with parameter? 【发布时间】:2019-12-30 09:40:25 【问题描述】:

我愿意实现的是:

    向报告添加一个名为@OrderBy 的新参数 如果 @OrderBy 的值为 null 或空白,则使用 Order By DaysLate DESC(意味着当前功能将保持原样) 如果 @OrderBy 的值为 1,则使用按 RugID ASC 排序(意味着我们将按 RugID 升序排列地毯,而不是按天数降序排列)

我使用这个查询(下面的截图)来实现它:

【问题讨论】:

【参考方案1】:

您可以使用CASE 表达式。这是一个例子:

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

话虽如此,最好用表达式在报表 Tablix 组中指定顺序逻辑。

【讨论】:

以上是关于如何在带有参数的 s-s-rS 查询设计器中使用 IF ELSE 语句?的主要内容,如果未能解决你的问题,请参考以下文章

如何在共享点设计器中插入查询值作为参数?

带有 ODBC 连接的 s-s-rS 参数基础知识

带有 Condition 和 s-s-rS 参数的 Select 语句

s-s-rS 打开带有提供参数的子报告

如何使用 s-s-rS 中的 URL 访问传递带有特殊字符的多个参数

如何在 s-s-rS 报告中将多个参数作为单独的多个页面传递?