Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   query complicado... (https://www.clubdelphi.com/foros/showthread.php?t=6788)

pescriba 21-01-2004 23:29:56

query complicado...
 
Tengo una consulta que se me está complicando. A ver.

Tengo una tabla de clientes, otra de facturas y otra de servicios.

La tabla de servicios tiene una fecha de comienzo y otra de fin.

Quiero hacer un SELECT que me devuelva para cada cliente el ultimo servicio realizado, de acuerdo a la fecha del servicio. ¿Alguna idea?

__cadetill 21-01-2004 23:35:10

si pusieras las estructuras de las tablas y las relaciones entre ellas, ayudaría ;)

no obstante, puedes ir mirando la función Max()

pescriba 22-01-2004 01:05:38

mas datos
 
Está en PARADOX. La consulta que tengo ahora es esta

SELECT Facturas.IdAbono As IdAbono,MAX(Facturas.NumeroFactura) as NumeroFactura,
MIN(PF1.FechaInicio) as MinFechaInicio,
MAX(PF1.FechaFinal) as MaxFechaFinal,
MAX(Abonos.Nombre) as NombreAbono,MAX(Clientes.Nombre) as NombreCliente,MAX(Contratos.NoContrato) NumContrato
FROM Clientes,Abonos,Facturas,PeriodosFacturados PF1,Contratos
WHERE Facturas.IdFactura = PF1.IdFactura
AND Abonos.IdAbono = Facturas.IdAbono
AND Clientes.IdCliente = Abonos.IdCliente
AND Facturas.IdContrato = Contratos.IdContratos
GROUP BY Facturas.IdAbono,PeriodosFacturados.IdFactura
ORDER BY NombreCliente,NombreAbono,MinFechaInicio

que me devuelve una fila por factura, pero yo sólo quiero la última factura. Hay una tabla de clientes, cada cliente puede tener varios abonos, a cada uno de los cuales le corresponde una factura. Para cada factura hay un único contrato válido y una serie de Periodos Facturados

Esta es mi última idea

SELECT Abonos.Nombre,facturas.NumeroFactura,PeriodosFacturados.FechaInicio
FROM abonos,facturas,periodosfacturados
WHERE Abonos.IdAbono = Facturas.IdAbono AND Facturas.IdFactura = PeriodosFacturados.IdFactura
AND PeriodosFacturados.FechaInicio =
(SELECT MAX(PF1.FechaInicio) FROM PeriodosFacturados PF1
WHERE PF1.IdFactura = Facturas.IdFactura
)

Pero no funciona. Se cuelga al intentarlo. Quizás sea un fallo de Paradox?


La franja horaria es GMT +2. Ahora son las 03:30:45.

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