[英]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.