Não está muito claro na sua pergunta em qual parâmetro você está tendo problemas para implementar a filtragem "ALL". Mas olhando para suas duas consultas, parece que é o
@p_ServerName
parâmetro. Em sua primeira consulta, as outras duas parecem ter a filtragem 'ALL' feita corretamente. Então o problema deve estar aqui:
(c1.SystemName = @p_ServerName OR c1.SystemName = c1.SystemName)
Primeiro, o que você está tentando alcançar com a segunda parte?
c1.SystemName=c1.SystemName
será sempre verdadeiro (a menos que c1.SystemName seja NULL
e se esse for seu objetivo, use c1.SystemName IS NOT NULL
Eu acho que isso deveria ser mais parecido com:
([email protected]_ServerName OR @p_ServerName='all')
Que é como você implementou os outros dois parâmetros, então talvez eu esteja perdendo alguma coisa.
Além disso, não tenho certeza do que você quer dizer quando diz que a solução de consulta UNIONed deve ser como o SSRS está fazendo as coisas. O SSRS não reescreve suas consultas com base nos parâmetros, apenas mantém esses valores nessas variáveis para você usar em sua consulta. Se o seu parâmetro
@p_ServerName
é uma string, então é apenas uma variável VARCHAR com os caracteres "all" nela.