La Consulta como esta actualmente es así:
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
Donde
@XX_TipoRetencion@ es mi variable el cual puede tener como valor
IV o
IS
El case esta construido de esa manera ya que la tabla posee las columnas
XX_Nro_Comprobante y
XX_Nro_ComprobanteISLR pero no necesariamente ambos tienen valores, por eso el motivo de usar el
CASE para mostrar las columnas por las que se quiere filtrar.
Espero me haya dado a entender.
Saludos