SQL - Ayuda por favor

 
Vista:

Ayuda por favor

Publicado por HM (2 intervenciones) el 24/11/2010 23:05:53
Es un reporte a través de Query, y lo que quiero mostrar es la lista de los clientes que tienen más de 548 días de no comprar, la fecha de la última factura, la fecha del último abono, el estatus de crédito, los días según última factura y el saldo del cliente.

Pero, al momento de desglosar el listado de cliente me sale más de 1 resultado con el mismo cliente, así:

CUSTOMER_ID FECHA FT FECHA ABONO SALDO
GTGTDRBODFARM 29/11/2008 29/11/2008 0.00
GTGTDRBODFARM 13/08/2008 29/11/2008 0.00
GTGTDRBODFARM 11/03/2008 29/11/2008 2,320.08

El código es el siguiente:

SELECT RECEIVABLES_RECEIVABLE.CUSTOMER_ID, Max(RECEIVABLES_RECEIVABLE.INVOICE_DATE) AS 'FECHA FT', MAX(RECEIVABLES_RECEIVABLE.LAST_PAID_DATE) AS 'FECHA ABONO',
'SALDO' = CASE
WHEN RECEIVABLES_RECEIVABLE.INVOICE_TYPE = 'INVOICE' THEN
SUM(RECEIVABLES_RECEIVABLE.TOTAL_AMOUNT - RECEIVABLES_RECEIVABLE.TOTAL_PAID_AMOUNT) ELSE
SUM(RECEIVABLES_RECEIVABLE.TOTAL_AMOUNT - RECEIVABLES_RECEIVABLE.TOTAL_PAID_AMOUNT)*-1
END
FROM LLFI.dbo.RECEIVABLES_RECEIVABLE RECEIVABLES_RECEIVABLE
GROUP BY RECEIVABLES_RECEIVABLE.CUSTOMER_ID, RECEIVABLES_RECEIVABLE.INVOICE_TYPE,RECEIVABLES_RECEIVABLE.INVOICE_STATUS

HAVING (RECEIVABLES_RECEIVABLE.INVOICE_STATUS<>'VOID') AND (Max(RECEIVABLES_RECEIVABLE.INVOICE_DATE)<=(GETDATE() - 540))

ORDER BY
RECEIVABLES_RECEIVABLE.CUSTOMER_ID

Gracias por la ayuda!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Ayuda por favor

Publicado por Leonardo Josué (1173 intervenciones) el 25/11/2010 21:08:09
Buenas tardes HM... si la idea es que sólo te regrese un registro por cada cliente entonces tienes un problema con tu cláusula GROUP BY

GROUP BY
RECEIVABLES_RECEIVABLE.CUSTOMER_ID, RECEIVABLES_RECEIVABLE.INVOICE_TYPE,
RECEIVABLES_RECEIVABLE.INVOICE_STATUS

al estar considerando los campos INVOICE_TYPE e INVOICE_STATUS quiere decir que te va a obtener el máximo correspondiente para cada combinación de estos campos, para comprobarlo puedes incluir también estos campos en tu select.

Creo que en esta sección deberías colocar sólo el campo Customer_ID, para que te obtenga sólo un registro.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar