От въпроса ви не е много ясно по кой параметър имате проблеми с прилагането на филтрирането "ВСИЧКИ". Но като погледнем двете ви заявки, изглежда, че това е @p_ServerName
параметър. В първата ви заявка изглежда, че другите две са направили правилно филтрирането „ВСИЧКИ“.
Така че проблемът трябва да е тук:
(c1.SystemName = @p_ServerName OR c1.SystemName = c1.SystemName)
Първо, какво се опитвате да постигнете с втората част? c1.SystemName=c1.SystemName
винаги ще бъде истина (освен ако c1.SystemName е NULL
и ако това е вашата цел, тогава използвайте c1.SystemName IS NOT NULL
Мисля, че това трябва да изглежда по-скоро:
([email protected]_ServerName OR @p_ServerName='all')
Така сте внедрили другите два параметъра, така че може би пропускам нещо.
Също така, не съм сигурен какво имате предвид, когато казвате, че решението за заявка UNIONed трябва да е как SSRS прави нещата. SSRS не пренаписва вашите заявки въз основа на параметрите, той просто залепва тези стойности в тези променливи, за да ги използвате в заявката си. Ако вашият параметър @p_ServerName
е низ, то това е просто променлива VARCHAR със знаците "всички" в нея.