[英]SSRS multiple Optional parameter
我很難弄清楚如何使一些參數成為必需的,而另一些參數是可選的。 當我插入可選參數的值時,結果返回的結果不正確,例如我希望查詢顯示 MNT 等於用戶插入的數字的所有結果
Select DISTINCT [AG].[dbo].SDG_E_FACT.FICHE,
concat(SDG_T_SERVICE.ECO, ' - ', [AG].[dbo].[SDG_T_SERVICE].NOM_USUEL) As ÉCOLE,
concat([AG].[dbo].[SDG_E_ELE].NOM, ', ', SDG_E_ELE.PNOM) As NOM,
convert(varchar(10), SDG_E_FACT.DATE_ANN, 120)As 'DATE ANN',
SDG_E_FACT.MNT , SDG_E_FACT.RAISON_ANNUL,
SDG_E_FACT.ANNEE
FROM SDG_T_SERVICE INNER JOIN ((SDG_E_FACT INNER JOIN SDG_E_ELE ON SDG_E_FACT.FICHE = SDG_E_ELE.FICHE) INNER JOIN SDG_E_DAN ON SDG_E_ELE.FICHE = SDG_E_DAN.FICHE) ON SDG_T_SERVICE.ID_SDG = SDG_E_FACT.ID_SDG
WHERE ( ((SDG_E_FACT.DATE_ANN) Is Not Null) AND ((SDG_E_FACT.MNT)>0) and SDG_E_FACT.ANNEE = @Annee AND SDG_T_SERVICE.ECO = @ÉCOLE ) And ( (SDG_E_FACT.ANNEE in (@Annee)) or ([AG].[dbo].SDG_E_FACT.FICHE in (@FICHE) or [SDG_E_ELE].NOM in (@Nom) or SDG_E_ELE.PNOM in (@Prénom) or SDG_E_FACT.MNT in (@Montant) or SDG_E_FACT.DATE_ANN in (@Date_de) or SDG_E_FACT.DATE_ANN in (@a) ))
Order by SDG_E_FACT.FICHE,SDG_E_FACT.MNT , SDG_E_FACT.RAISON_ANNUL
將參數設為可選時,當參數等於 NULL 時,我會為該參數添加 OR 條件。
WHERE ( (SDG_E_FACT.MNT = @MNT OR @MNT IS NULL)
這樣,當 MNT 等於 @MNT或@MNT 為 NULL 時,條件將匹配。
所以你的查詢看起來像:
SELECT DISTINCT [AG].[DBO].SDG_E_FACT.FICHE,
CONCAT(SDG_T_SERVICE.ECO, ' - ', [AG].[dbo].[SDG_T_SERVICE].NOM_USUEL) AS ÉCOLE,
CONCAT([AG].[dbo].[SDG_E_ELE].NOM, ', ', SDG_E_ELE.PNOM) AS NOM,
CONVERT(VARCHAR(10), SDG_E_FACT.DATE_ANN, 120) AS 'DATE ANN',
SDG_E_FACT.MNT , SDG_E_FACT.RAISON_ANNUL,
SDG_E_FACT.ANNEE
FROM SDG_T_SERVICE
INNER JOIN ((SDG_E_FACT
INNER JOIN SDG_E_ELE ON SDG_E_FACT.FICHE = SDG_E_ELE.FICHE)
INNER JOIN SDG_E_DAN ON SDG_E_ELE.FICHE = SDG_E_DAN.FICHE
) ON SDG_T_SERVICE.ID_SDG = SDG_E_FACT.ID_SDG
WHERE ( (SDG_E_FACT.MNT = ISNULL(@MNT, -1) OR @MNT IS NULL)
AND SDG_E_FACT.DATE_ANN IS NOT NULL
AND SDG_E_FACT.ANNEE = @Annee
AND SDG_T_SERVICE.ECO = @ÉCOLE )
AND ( SDG_E_FACT.ANNEE IN (@Annee)
OR (AG.dbo.SDG_E_FACT.FICHE IN (@FICHE)
OR SDG_E_ELE.NOM IN (@Nom)
OR SDG_E_ELE.PNOM IN (@Prénom)
OR SDG_E_FACT.MNT IN (@Montant)
OR SDG_E_FACT.DATE_ANN IN (@Date_de)
OR SDG_E_FACT.DATE_ANN IN (@a) ))
ORDER BY SDG_E_FACT.FICHE,SDG_E_FACT.MNT , SDG_E_FACT.RAISON_ANNUL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.