Verificar que hay datos todos los días y para todos los clientes.

06/10/2003 - 23:09 por marcelo | Informe spam
Tengo una tabla de facturas con los datos de
fechafactura, cliente y demás. El formato de la fecha es
de tipo entero yyyymmdd. Ej: 20030923. Por otro lado
tengo una tabla FECHAS (de tipo entero también) con todas
las fechas haciendo foreign key con la fechaFactura de
Facturas.

Cómo hago para saber los días que no tengo facturas para
cada uno de los clientes?

Por ej si para el 20030923 no tengo facturas para los
clientes 14 y 15 deben salir en el query, si para el
20030924 no tengo facturas para el cliente 9, 18 y 22
también deben salir en el query, etc.
 

Leer las respuestas

#1 Javier Loria
07/10/2003 - 04:34 | Informe spam
Hola Mauricio:
Podrias probar con algo como:
/* SELECT con CROSS y RIGHT JOIN */
SELECT SinFactura.ClienteID,
SinFactura.Fecha
FROM Facturas RIGHT JOIN
(
SELECT ClienteID, Fecha
FROM Clientes CROSS JOIN Fechas
) AS SinFactura
ON
Facturas.ClienteID=SinFactura.ClienteID AND
Facturas.FechaFactura=SinFactura.Fecha
WHERE Facturas.ClienteID IS NULL
/* Fin de SELECT con CROSS y RIGHT JOIN */

Espero te sirva,

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

marcelo escribio:
Tengo una tabla de facturas con los datos de
fechafactura, cliente y demás. El formato de la fecha es
de tipo entero yyyymmdd. Ej: 20030923. Por otro lado
tengo una tabla FECHAS (de tipo entero también) con todas
las fechas haciendo foreign key con la fechaFactura de
Facturas.

Cómo hago para saber los días que no tengo facturas para
cada uno de los clientes?

Por ej si para el 20030923 no tengo facturas para los
clientes 14 y 15 deben salir en el query, si para el
20030924 no tengo facturas para el cliente 9, 18 y 22
también deben salir en el query, etc.

Preguntas similares