Aus Ihrer Frage geht nicht ganz klar hervor, für welchen Parameter Sie Probleme haben, die Filterung "ALLE" zu implementieren. Aber wenn man sich Ihre beiden Abfragen ansieht, sieht es so aus, als wäre es der @p_ServerName
Parameter. In Ihrer ersten Abfrage scheinen die anderen beiden die 'ALL'-Filterung richtig durchgeführt zu haben.
Das Problem muss also hier liegen:
(c1.SystemName = @p_ServerName OR c1.SystemName = c1.SystemName)
Erstens, was versuchst du mit dem zweiten Teil zu erreichen? c1.SystemName=c1.SystemName
wird immer wahr sein (es sei denn, c1.SystemName ist NULL
und wenn das Ihr Ziel ist, dann verwenden Sie c1.SystemName IS NOT NULL
Ich denke, das sollte eher so aussehen:
([email protected]_ServerName OR @p_ServerName='all')
So haben Sie die anderen beiden Parameter implementiert, also übersehe ich vielleicht etwas.
Außerdem bin ich mir nicht sicher, was Sie meinen, wenn Sie sagen, dass die UNIONed-Abfragelösung so sein muss, wie SSRS Dinge tut. SSRS schreibt Ihre Abfragen nicht basierend auf den Parametern um, sondern klebt diese Werte einfach in diese Variablen, damit Sie sie in Ihrer Abfrage verwenden können. Wenn Ihr Parameter @p_ServerName
ein String ist, dann ist es nur eine VARCHAR-Variable mit den Zeichen "all" darin.