Il n'est pas très clair d'après votre question sur quel paramètre vous rencontrez des difficultés pour implémenter le filtrage "ALL". Mais en regardant vos deux requêtes, il semble que ce soit le @p_ServerName
paramètre. Dans votre première requête, les deux autres semblent avoir fait correctement le filtrage 'ALL'.
Donc le problème doit être là :
(c1.SystemName = @p_ServerName OR c1.SystemName = c1.SystemName)
Tout d'abord, qu'essayez-vous d'accomplir avec la deuxième partie ? c1.SystemName=c1.SystemName
sera toujours vrai (sauf si c1.SystemName est NULL
et si tel est votre objectif, utilisez c1.SystemName IS NOT NULL
Je pense que cela devrait plutôt ressembler à :
([email protected]_ServerName OR @p_ServerName='all')
C'est ainsi que vous avez implémenté les deux autres paramètres, alors peut-être qu'il me manque quelque chose.
De plus, je ne suis pas sûr de ce que vous voulez dire lorsque vous dites que la solution de requête UNIONed doit être la façon dont SSRS fait les choses. SSRS ne réécrit pas vos requêtes en fonction des paramètres, il colle simplement ces valeurs dans ces variables pour que vous les utilisiez dans votre requête. Si votre paramètre @p_ServerName
est une chaîne alors c'est juste une variable VARCHAR avec les caractères "all" dedans.