如何在带有参数的 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 语句?的主要内容,如果未能解决你的问题,请参考以下文章
带有 Condition 和 s-s-rS 参数的 Select 语句