Gracias por responder, despues de tanto indagar y leer busque otra alternativa para poder obtener el resultado deseado, pero antes voy a tratar de explicar lo que quise obtener con la consulta anterior.
Este es el query anterior:
Código SQL:
Ver originalSELECT C_Invoice.C_Invoice_ID, NULL, C_Invoice.DocumentNo, C_Invoice.IsActive, XX_NRO_COMPROBANTE, XX_NRO_COMPROBANTEISLR
FROM C_Invoice
WHERE C_Invoice.DocumentNo IS NOT NULL
AND C_Invoice.IsSoTrx = 'N'
AND C_Invoice.AD_Client_ID IN (0, 1000000)
AND C_Invoice.DocStatus IN ('VO', 'RE')
AND (CASE '@XX_TipoRetencion@'
WHEN 'IV'
THEN XX_NRO_COMPROBANTE IS NOT NULL
AND XX_NRO_COMPROBANTE <> ' '
WHEN 'IS'
THEN XX_NRO_COMPROBANTEISLR IS NOT NULL
AND XX_NRO_COMPROBANTEISLR <> ' '
END
)
ORDER BY C_Invoice.DocumentNo DESC
Con esto lo que quería que hiciera es que cuando el valor de mi variable
@XX_TipoRetencion@ fuese
IV en la clausula WHERE tomara como condición lo siguiente
XX_NRO_COMPROBANTE IS NOT NULL AND XX_NRO_COMPROBANTE <> ' ' en caso contrario tomara este
XX_NRO_COMPROBANTEISLR IS NOT NULL AND XX_NRO_COMPROBANTEISLR <> ' ', como no lo pude obtener así como en el
PostgreSQL realice otro método donde si me funcionó.
El query es el siguiente:
Código SQL:
Ver originalSELECT C_Invoice.C_Invoice_ID, NULL, C_Invoice.DocumentNo, C_Invoice.IsActive, XX_NRO_COMPROBANTE, XX_NRO_COMPROBANTEISLR
FROM C_Invoice
WHERE C_Invoice.DocumentNo IS NOT NULL
AND C_Invoice.IsSoTrx = 'N'
AND C_Invoice.AD_Client_ID IN (0, 1000000)
AND C_Invoice.DocStatus IN ('VO', 'RE')
AND (
('@XX_TipoRetencion@'='IV' AND XX_NRO_COMPROBANTE IS NOT NULL AND XX_NRO_COMPROBANTE <> ' ')
OR
('@XX_TipoRetencion@'='IS' AND XX_NRO_COMPROBANTEISLR IS NOT NULL AND XX_NRO_COMPROBANTEISLR <> ' ')
)
ORDER BY C_Invoice.DocumentNo DESC
Estoy agradecido por la ayuda y el interes sobre este tema.
Saludos.