繁体   English   中英

SSRS 多个 可选参数

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM