Hola ,
Lo primero comentar que no tengo aquí SQLServer.
He estado viendo la ayuda de SQLServer de la función exits, y la usan de diferente manera. En los ejemplos utilizan
Código SQL
[-]SELECT * from TABLA
WHERE
EXITS(....)
y tú la utilizas de otra manera.
Código SQL
[-]SELECT TOP 1 Q.CAMPO
FROM (SELECT CAMPO = '04' UNION ALL SELECT '02') Q
En este caso, SELECT CAMPO='04' tendrá que devolverte true o false. Es decir, no sé ni cómo te permite hacer una UNION con SELECT ALL, ya que el resultado de la primera select es un campo booleano y la segunda un campo string.
Código SQL
[-]
SELECT TOP 1 Q.CAMPO FROM
(SELECT CAMPO =
CASE
WHEN EXISTS(aquí va una consulta que devuelve 0 registros)
THEN '03' ELSE '04' END
UNION ALL SELECT '02') Q
En este caso debiera funcionar bien, pero igual que antes, utilizas de forma muy rara la función exits.
Prueba a poner
Código SQL
[-]
select case when count(1)>0 then '03' else '04' end as CAMPO
from xxxx( tu consulta)
a ver si tienes el resultado esperado.
Espero haber sido claro.
Saludos
PD: Estaré pendiente de lo que responda el comité de sabios...