簡體   English   中英

SSRS多值參數

[英]SSRS Multi-Value Parameter

我有一個基於地理位置的SSRS報告。 數據集返回項目記錄,包括區域區域,選舉區域以及城市級別。 我創建了從區域到選舉再到城市的級聯參數。

但是,每個項目都可以在選定的選舉區域內擁有多個城市。 用戶要求參數過濾器記錄已選擇該城市的記錄。 因此,如果選擇的參數是:

  • 地區:RDEK地區
  • 地區:克蘭布魯克市
  • 城市:(選項為Cranbrook和Rockyview)

如果他們選擇“克蘭布魯克”,他們希望選擇克蘭布魯克,只有項目的記錄,而不是那些克蘭布魯克和Rockyview選定的項目。

現在,我的報告結果將顯示選擇了Cranbrook以及項目中選擇的其他城市的所有記錄。 例如,我將看到所有選擇了Cranbrook的項目以及所有選擇了Cranbrook和Rockyview的項目。

以下是我的報告的更多詳細信息。

  • 按地區,選舉區域和項目編號分組。
  • 參數:
    • @Regional Regional-區域數據@Regional可用值(選擇所有可用的)
    • @Area選舉區數據@Area可用值(選擇@Regional中的所有可用值)
    • @City城市數據@City可用值(選擇@area中的所有值)
    • @Status所有可用狀態
    • @Fiscal Year -所有可用的會計年度。

我的詳細資料數據集查詢(以下)中有一個過濾器,該過濾器僅過濾@city參數中的那些城市。

我的數據集查詢:

SELECT Filteredcbt_geographicarea.cbt_electoralareaidname
  , Filteredcbt_geographicarea.cbt_name AS City
  , Filteredcbt_project.cbt_projectnumber
  , Filteredcbt_geographicarea.cbt_electoralidname
  , Filteredcbt_projectfiscalyear.cbt_committedamount
  , Filteredcbt_projectfiscalyear.cbt_commitmentavailable
  , Filteredcbt_projectfiscalyear.cbt_commitmentdisbursed
  , Filteredcbt_project.cbt_organizationlegalnameidname
  , Filteredcbt_project.statuscodename
  , Filteredcbt_projectfiscalyear.cbt_projectnameid
  , Filteredcbt_projectfiscalyear.cbt_programfiscalyearidname
  , Filteredcbt_projectfiscalyear.cbt_fiscalyearidname
  , Filteredcbt_regionaldistrict.cbt_name AS [Regional District]
FROM Filteredcbt_regionaldistrict
    INNER JOIN Filteredcbt_electoralarea ON Filteredcbt_regionaldistrict.cbt_regionaldistrictid = Filteredcbt_electoralarea.cbt_regionaldistrictid
    INNER JOIN Filteredcbt_category
    INNER JOIN Filteredcbt_program ON Filteredcbt_category.cbt_categoryid = Filteredcbt_program.cbt_categoryid
    INNER JOIN Filteredcbt_project ON Filteredcbt_program.cbt_programid = Filteredcbt_project.cbt_programnameid
    INNER JOIN Filteredcbt_projectfiscalyear ON Filteredcbt_project.cbt_projectid = Filteredcbt_projectfiscalyear.cbt_projectnameid
    INNER JOIN Filteredcbt_cbt_project_cbt_geographicarea ON Filteredcbt_project.cbt_projectid = Filteredcbt_cbt_project_cbt_geographicarea.cbt_projectid
    INNER JOIN Filteredcbt_geographicarea ON Filteredcbt_cbt_project_cbt_geographicarea.cbt_geographicareaid = Filteredcbt_geographicarea.cbt_geographicareaid 
        ON Filteredcbt_electoralarea.cbt_electoralareaid = Filteredcbt_geographicarea.cbt_electoralareaid
WHERE        (Filteredcbt_geographicarea.cbt_electoralareaidname IN (@Area)) AND    (Filteredcbt_project.statuscodename IN (@Status)) AND 
                     (Filteredcbt_projectfiscalyear.cbt_fiscalyearidname IN (@FiscalYear)) AND (Filteredcbt_regionaldistrict.cbt_name IN (@Regional)) AND 
                     (Filteredcbt_geographicarea.cbt_name IN (@City)) AND (NOT EXISTS
                         (SELECT        cbt_electoralareaid, cbt_electoralareaidname, cbt_electoralid, cbt_electoralidname, cbt_geographicareaid, cbt_name 
                           FROM            Filteredcbt_geographicarea AS ga1
                           WHERE        (cbt_name NOT IN (@City)) AND (cbt_geographicareaid = Filteredcbt_cbt_project_cbt_geographicarea.cbt_geographicareaid)))

ORDER BY Filteredcbt_projectfiscalyear.cbt_fiscalyearidname
ORDER BY Filteredcbt_projectfiscalyear.cbt_fiscalyearidname;

Filteredcbt_cbt_project_cbt_geographicarea示例:

 cbt_cbt_project_cbt_geographicareaid cbt_geographicareaid cbt_projectid A6D7292F-EA05-E411-BCEA-00155D0470B9 4EB4F611-4BD1-E311-8AB9-00155D067193 2C2FC521-EA05-E411 998F9FE5-2806-E411-BCEA-00155D0470B9 38B4F611-4BD1-E311-8AB9-00155D067193 54FD66DD-2806-E411- 9A8F9FE5-2806-E411-BCEA-00155D0470B9 7EB4F611-4BD1-E311-8AB9-00155D067193 54FD66DD-2806-E411- 956F0BD1-2A06-E411-BCEA-00155D0470B9 5BB4F611-4BD1-E311-8AB9-00155D067193 82B478C7-2A06-E411- 54D3ED7F-2C06-E411-BCEA-00155D0470B9 54B4F611-4BD1-E311-8AB9-00155D067193 ADC83877-2C06-E411- 55D3ED7F-2C06-E411-BCEA-00155D0470B9 C8B4F611-4BD1-E311-8AB9-00155D067193 ADC83877-2C06-E411- EBDC3544-2E06-E411-BCEA-00155D0470B9 5BB4F611-4BD1-E311-8AB9-00155D067193 40C1163C-2E06-E411- 70A9B479-AE06-E411-BCEA-00155D0470B9 54B4F611-4BD1-E311-8AB9-00155D067193 F24BE26E-AE06-E411- 616C21B3-B506-E411-BCEA-00155D0470B9 65B4F611-4BD1-E311-8AB9-00155D067193 C4389EAA-B506-E411-BCEA- 626C21B3-B506-E411-BCEA-00155D0470B9 99B4F611-4BD1-E311-8AB9-00155D067193 C4389EAA-B506-E411-BCEA- 636C21B3-B506-E411-BCEA-00155D0470B9 ABB4F611-4BD1-E311-8AB9-00155D067193 C4389EAA-B506-E411-BCEA- 646C21B3-B506-E411-BCEA-00155D0470B9 F7B4F611-4BD1-E311-8AB9-00155D067193 C4389EAA-B506-E411-BCEA- 

Filteredcbt_geographicarea示例:

 cbt_electoralareaid cbt_electoralareaidname cbt_geographicareaid cbt_name 16B4F611-4BD1-E311-8AB9-00155D067193 Town of Creston 2EB4F611-4BD1-E311-8AB9-00155D067193 Alice Siding 13B4F611-4BD1-E311-8AB9-00155D067193 RDCK Area I 2FB4F611-4BD1-E311-8AB9-00155D067193 Thrums 0EB4F611-4BD1-E311-8AB9-00155D067193 RDCK Area D 30B4F611-4BD1-E311-8AB9-00155D067193 Ainsworth Hot Springs 0EB4F611-4BD1-E311-8AB9-00155D067193 RDCK Area D 31B4F611-4BD1-E311-8AB9-00155D067193 Argenta 

謝謝,讓我知道您是否需要其他信息。

嘗試將其添加到您的WHERE子句中:

AND NOT EXISTS(
  SELECT * FROM Filteredcbt_geographicarea ga1
  WHERE ga1.cbt_name NOT IN (@City)
  AND ga1.cbt_geographicareaid=Filteredcbt_cbt_project_cbt_geographicarea.cbt_geographicareaid 
)

如果可行,我將在回答中添加解釋。 :)

如果您向您的聯接中添加另一個表

INNER JOIN (SELECT Filteredcbt_geographicarea.cbt_geographicareaid, string_agg(Filteredcbt_geographicarea.cbt_name, ', ') AS City_List
        FROM Filteredcbt_geographicarea
        GROUP BY 1) City_List_Lookup ON City_List_Lookup.cbt_geographicareaid = Filteredcbt_cbt_project_cbt_geographicarea.cbt_geographicareaid

使用此表,您可以將連接的城市與輸入的參數進行比較。

因此,您的where子句變為:

City_List_Lookup.City_List = (@City)

通過將各個城市串聯在一起,您可以查找整個列表僅包含一個城市的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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