簡體   English   中英

在SSRS數據集SQL查詢中創建新行以在報告參數中使用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM