CASE en SQL

Tengo un requerimiento de un query para los pagos recibidos en donde involucramos Factura, Factura de anticipo, Nota de crédito y pago recibido.
Factura es tabla OINV T0
Factura de Anticipo es tabla ODPI T1
Nota de Crédito es tabla ORIN T2
Pago Recibido es tabla ORCT T3
Tengo las siguientes necesidades:
Que me traiga el numero de documento de la factura (T0.DocNum) el toatal (T0.DocTotal) si esta factura ha sido pagada traime el numero de pago, si esta factura es de atnicipo que me diga el numero de factura T1.docNum y si esta pagada si es nota de crédito que traiga el numero de nota de crédito.
Algo así más o menos.
Podría alguien darme una mano con eso por que ya lelvo 1 semana y nomas no.
Muchas Gracias
Respuesta
1
Lo que planteas es mejor hacerlo en varios select tomando los datos de la tabla de facturas y dependiendo de cada una hacer lo que quieres
Lo puedes hacer lo puedes hacer con una única consulta, pero deberás utilizar sentencias que no estén en el ANSI SQL por lo que varían de una base de datos a otra.
Es utilizar Outer Join, que le indicas al juntar dos o más tablas cual es la principal, y si en la secundaria no existe un registro para el dato de la principal traiga datos en nulo.
Por ejemplo en Oracle:
SELECT * (los datos que quieras)
FROM OINV T0, ODPI T1, ORIN T2, ORCT T3
WHERE T0.DocNum = T1.DocNum(+)
  AND T0.DocNum = T2.DocNum(+)
  AND T0.DocNum = T3.DocNum(+);

Si estás con otra base busca lo que corresponde al (+) en la base que utilizas.
Si

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas