Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Al filtrar por fecha borra los "sin compras" (https://www.clubdelphi.com/foros/showthread.php?t=9061)

Carmelo Cash 13-04-2004 17:12:41

Al filtrar por fecha borra los "sin compras"
 
Hola Amigos:
Estoy Utilizando InterBase Open Sourse Ver 1.0.0.326 y necesito hacer una consulta que traiga los clientes y la cantidad de unidades que compraron en un período.
Tengo una Tabla de Clientes y otra de Transacciones con un campo llamado Units (esta empresa vende un único producto).

El problema que me surge es que no me muestra los clientes que no compraron, es decir que no tienen registros en la tabla de transacciones en ese período.

Estoy probando con:

Select
Cs.Customer_code as Codigo,
Cs.Customer_name as Cliente,
Sum(Tr.Units) as Unidades

From Customer Cs
Left Outer Join Transactions Tr on Tr.customer_code = Cs.customer_code

Where TR.Transaction_Date > "3/1/2003 00:00:00"
And TR.Transaction_Date < "3/31/2003 23:59:59"

Group BY Cs.Customer_Code, Cs.Customer_Name
Order by 3 DESC


También pobé agregando en Where
or Tr.Units is null
or Tr.Units=0
pero no obtuve el resultado esperado.

jachguate 14-04-2004 06:58:29

creo que algo así debiera funcionar...

Código:

Select Cs.Customer_code Codigo, Cs.Customer_name Cliente,
      Sum(Tr.Units) Unidades
  From Customer Cs
      Left Outer Join Transactions Tr
      on Tr.customer_code = Cs.customer_code
 Where (tr.transaction_date is null) or
      (TR.Transaction_Date between "3/1/2003 00:00:00" and "3/31/2003 23:59:59")
 Group BY Cs.Customer_Code, Cs.Customer_Name
 Order by 3 DESC

Hasta luego.

;)

Carmelo Cash 14-04-2004 16:55:21

Gracias
 
Gracias jachguate, funcionó a la perfeción.

Un abrazo :cool:

roman 14-04-2004 17:15:21

Cita:

Empezado por Carmelo Cash
Gracias jachguate, funcionó a la perfeción.

Una pregunta:

¿Te muestra incluso los clientes que no tienen compras en el periodo determinado pero sí en otras fechas?

Sé que en Interbase puede ser distinto pero al hacer una prueba rápida con Paradox pasó que me incluía clientes sin compras en el periodo sólo si dichos clientes de hecho no tenían ni una sóla compra.

// Saludos

jachguate 14-04-2004 18:00:16

Te respondo yo... si, mostrará todos los clientes, tengan o no tengan compras en el rango de fechas. Para los que si tengan en el rango de fechas, el total de unidades compradas, y los que no, solo los datos del cliente (y null en el total de unidades).

Esto es porque el encuentro externo se hace contra la tabla de clientes.

Hasta luego.

;)

Carmelo Cash 14-04-2004 23:34:46

Para salir de duda
 
Sí, te muestra todos los clientes.
Para estar seguro puse un período año 2005 y me mostró toda la lista de clientes con la unidades en null.


Hasta pronto.


La franja horaria es GMT +2. Ahora son las 01:46:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi