Cita:
Iniciado por Gabo77 Quizas esto te ayude:
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.IdCliente
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
AND MAX(PA.FechaPedido) = P.FechaPedido
GROUP BY PA.IdCliente
)
GROUP BY P.IdCliente
) AS PMin
ON C.IdCliente = PMax.IdCliente
No la probe, así que uizas tenga uno que otro errorcillo, además de que no se la estructura de tus tablas
Saludos!
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.