Z vašeho dotazu není příliš jasné, na který parametr máte potíže s implementací filtrování „ALL“. Ale z pohledu na vaše dva dotazy to vypadá, že je to @p_ServerName
parametr. Ve vašem prvním dotazu se zdá, že u dalších dvou bylo správně provedeno filtrování 'ALL'.
Problém tedy musí být zde:
(c1.SystemName = @p_ServerName OR c1.SystemName = c1.SystemName)
Za prvé, čeho se snažíte dosáhnout druhým dílem? c1.SystemName=c1.SystemName
bude vždy true (pokud c1.SystemName není NULL
a pokud je to vaším cílem, použijte c1.SystemName IS NOT NULL
Myslím, že by to mělo vypadat spíše takto:
([email protected]_ServerName OR @p_ServerName='all')
Tímto způsobem jste implementovali další dva parametry, takže mi možná něco uniká.
Také si nejsem jistý, co máte na mysli, když říkáte, že řešení dotazů UNIONed musí být takové, jak SSRS dělá věci. SSRS nepřepisuje vaše dotazy na základě parametrů, pouze vkládá tyto hodnoty do těchto proměnných, abyste je mohli použít ve svém dotazu. Pokud je váš parametr @p_ServerName
je řetězec, pak je to jen proměnná VARCHAR se znaky "all" v ní.