Valores nulos.
Publicado por Juan Carlos (12 intervenciones) el 23/07/2009 01:13:50
Hola a todos: Tengo una consulta que puede resultar muy tonta pero necesito su ayuda:
Resulta que tengo que armar un reporte con Crystal en VB.NET, lo hago sobre una tabla que primero lleno con consultas sql: TMP_CLIENTES. No es una tabla temporal. Tiene los campos: ID, NOMBRE, SALDO, ULTIMO_PAGO.
Para llenar dicha tabla creo tablas temporales:
#SALDO (ID, SALDO)
#FECHA (ID, FECHA)
A #FECHA la lleno con:
INSERT INTO #FECHA (ID, FECHA) SELECT ID, MAX(FECHA) FROM CUENTAS GROUP BY ID
(parecido hago con #SALDO)
Y después lleno TMP_CLIENTES:
INSERT INTO CLIENTES (ID, NOMBRE, SALDO, ULTIMO_PAGO)
SELECT ID, NOMBRE, SALDO, FECHA FROM CLIENTE, #SALDO, #FECHA
WHERE CLIENTE.ID = #SALDO.ID AND CLIENTE.ID = #FECHA.ID
El problema es que si el cliente no ha realizado un pago todavía, las temporales no tienen registro para ese cliente y entonces no me aparece el mismo en la consulta final. Tengo entendido que esto lo puedo solucionar con un left join, pero no se como escribirlo con 3 tablas en el from. Me pueden ayudar? Está bien que lo encare así?
La otra opción era poner '01/01/1900' con un update a las temporales con nulo en saldo o fecha pero eso es realmente una mala solución.
Gracias!
Resulta que tengo que armar un reporte con Crystal en VB.NET, lo hago sobre una tabla que primero lleno con consultas sql: TMP_CLIENTES. No es una tabla temporal. Tiene los campos: ID, NOMBRE, SALDO, ULTIMO_PAGO.
Para llenar dicha tabla creo tablas temporales:
#SALDO (ID, SALDO)
#FECHA (ID, FECHA)
A #FECHA la lleno con:
INSERT INTO #FECHA (ID, FECHA) SELECT ID, MAX(FECHA) FROM CUENTAS GROUP BY ID
(parecido hago con #SALDO)
Y después lleno TMP_CLIENTES:
INSERT INTO CLIENTES (ID, NOMBRE, SALDO, ULTIMO_PAGO)
SELECT ID, NOMBRE, SALDO, FECHA FROM CLIENTE, #SALDO, #FECHA
WHERE CLIENTE.ID = #SALDO.ID AND CLIENTE.ID = #FECHA.ID
El problema es que si el cliente no ha realizado un pago todavía, las temporales no tienen registro para ese cliente y entonces no me aparece el mismo en la consulta final. Tengo entendido que esto lo puedo solucionar con un left join, pero no se como escribirlo con 3 tablas en el from. Me pueden ayudar? Está bien que lo encare así?
La otra opción era poner '01/01/1900' con un update a las temporales con nulo en saldo o fecha pero eso es realmente una mala solución.
Gracias!
Valora esta pregunta


0