22/08/2007, 16:27
|
| | | Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 18 años, 1 mes Puntos: 6 | |
Re: Cálculo de días transcurridos entre dos últimos pedidos Cita:
Iniciado por carlangas07 Había un leve error (marcado en negrita), pero corregido éste, al ejecutar la consulta me da el siguiente error:
No puede aparecer un agregado en la clausula WHERE si no es en una subconsulta contenida en una cláusula HAVING, o en una lista de selección, y siempre que la columna agregada sea una referencia externa.
Y la consulta se queda en esto:
Código:
SELECT C.nombre, DATEDIFF([DAY], PMax.FechaPedido, PMin.FechaPedido) AS Diferencia
FROM dbo.clientes C INNER JOIN
(SELECT MAX(FechaPedido) AS FechaPedido, IdCliente
FROM Pedidos P
GROUP BY P.IdCliente) PMax ON C.idcliente = PMax.IdCliente INNER JOIN
(SELECT MAX(FechaPedido) AS FechaPedido, IdCliente
FROM Pedidos P
WHERE NOT EXISTS
(SELECT 1
FROM Pedidos PA
WHERE PA.IdCliente = P.IdCliente AND MAX(PA.FechaPedido) = P.FechaPedido
GROUP BY PA.IdCliente)
GROUP BY P.IdCliente) PMin ON C.idcliente = PMax.IdCliente
La verdad es que esto me sobrepasa bastante, tengo unos conocimientos muy limitados de SQL y no entiendo ni lo que me está diciendo el error.
Gracias de todas maneras, intentaré investigar a ver si encuentro la solución.
Ohh!! bueno, nadie es perfecto.... sobre todo yo!!
Sorry por la cageteada.... el error es sencillo de resolver.... espero que esto quede bien Saludos!
Código:
SELECT C.Nombre, DATEDIFF(DAY, PMax.FechaPedido, PMin.FechaPedido) AS Diferencia
FROM Clientes C
INNER JOIN (/*Esta sentencia me traerá el último pedido de cada cliente*/
SELECT MAX(FechaPedido) AS FechaPedido, IdCliente
FROM Pedidos P
GROUP BY P.IdCliente
) AS PMax
ON C.IdCliente = PMax.IdCiente
INNER JOIN (
SELECT MAX(FechaPedido) AS FechaPedido, IdCliente
FROM Pedidos P
WHERE NOT EXISTS(/*Esta sentencia hara que no me considere el registro
mayor y seleccione el segundo mayor, si es que existe*/
SELECT 1
FROM Pedidos PA
WHERE PA.IdCliente = P.IdCliente
HAVING MAX(PA.FechaPedido) = P.FechaPedido
GROUP BY PA.IdCliente
)
GROUP BY P.IdCliente
) AS PMin
ON C.IdCliente = PMax.IdCliente
__________________ Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros.... |