[英]Creating a new row in SSRS dataset SQL query to use in a report parameter
我会用一些SQL来回转转,希望对您有所帮助。
我查找了创建临时表,嵌套的Select语句(建议尽量避免类似瘟疫的用法)以及Case语句的各种用法,但我似乎找不到有效的解决方案。 我想说我是SQL的初学者。
我有一张桌子,上面有10条相关记录。 返回表中所有相关条目的查询为:
SELECT
TblServAct.ServActId
,TblServAct.ServActName
FROM TblServAct
WHERE TblServAct.ServActExclude IS NULL
ORDER BY TblServAct.ServActName
这是我遇到问题的地方:
当参数(@YESNOActivity)=是时,我希望返回表中的所有行。 我已经用CASE语句做到了这一点
...但是,当参数(@YESNOActivity)=否时,我只希望返回表中实际上不存在的一行(并且不应将其插入到实际表中)。 我需要插入的值是:ServActId = 101和ServActName ='在Parameter2中选择YES以按服务活动进行过滤'
出于背景原因,我这样做的原因是因为我发现SSRS报告参数特别难以按条件格式化。 我想使用上面的数据集在参数中返回一条消息(叫它为parameter2),用户需要在(@YESNOActivity)中选择是,以便在parameter2中看到完整的选择列表。
如果我可以使用它,我可以看到很多潜在的重用潜力,因此所有建议都值得赞赏
谢谢艾琳
我相信这应该做的工作,只是包括在参数WHERE
子句和UNION
它用自己的一行数据。
SELECT
TblServAct.ServActId
,TblServAct.ServActName
FROM TblServAct
WHERE TblServAct.ServActExclude IS NULL
AND @YESNOActivity = 'Yes'
UNION ALL
SELECT
ServActId = 101
,ServActName = 'Select YES in Parameter2 to filter by Service Activity'
WHERE @YESNOActivity = 'No'
ORDER BY TblServAct.ServActName
一种方法是使用此查询:
SELECT
TblServAct.ServActId
,TblServAct.ServActName
FROM TblServAct
WHERE TblServAct.ServActExclude IS NULL
AND 'Yes' = @YESNOActivity
UNION ALL
SELECT
101 AS ServActId
,'Select YES in Parameter2 to filter by Service Activity' AS ServActName
WHERE 'No' = @YESNOActivity
ORDER BY TblServAct.ServActName
另一种方法是创建两个数据流,并在约束中使用变量将处理发送给一个或另一个。
第三种方法是在SQL命令上放置一个表达式,然后使用变量在两个SQL语句之间切换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.