ROMPECABEZAS

17/11/2004 - 20:37 por Daniel Diez | Informe spam
Tenemos
Tabla Pedido (IDPedido, Fecha...)
Tabla PedidoDetalle (ID, IDPedido, IDProducto...)
Tabla Producto (IDProducto,...)

Quiero saber el IDPedido y la Fecha y el IDProducto de los ultimos n Pedidos
para cada uno de los
productos. Es decir para cada producto saber cuando los n ultimos pedidos en
que se vendio.

Si hubiese 5 productos y todos se hubiesen vendido mas de 3 veces y pido los
3 ultimos pedidos de cada uno la consulta debiera devolver 15 lineas

La consulta debiera devolver el IDPedido, Fecha, IDProducto con nulos si el
producto no se ha vendido nunca. Si se ha vendido mas de una vez con la
misma Fecha debe devolver el de mayor IDPedido

Preguntas similare

Leer las respuestas

#1 Battle Troll
17/11/2004 - 23:20 | Informe spam
creo q' podrias hacer una consulta de union donde unas los datos de 3
consultas, cada una de las cuales sera una consulta del tipo SELECT TOP 3
(para los 3 ultimos) ordenados por fecha de la mas reciente a la mas vieja
y por IDPedido (tambien en orden inverso)

Si lo quieres hacer generico, en vez de 3 usa una variable, no se,
@NumUltimos y declaras todo esto en un proc. almacenado que reciba esa
variable de tipo int...
Respuesta Responder a este mensaje
#2 Javier Loria
18/11/2004 - 18:39 | Informe spam
Hola:
El desempeno no debe ser bueno, pero puedes hacer algo como:
=CREATE VIEW DetallePedidoFecha
AS
SELECT PedidoDetalle.IdPedido
, PedidoDetalle.Fecha
, PedidoDetalle.IDProducto
FROM PedidoDetalle
INNER JOIN Pedido
ON PedidoDetalle.IDPedido=Pedido.IDPedido
GO

SELECT A.IdProducto
, A.Fecha
, A.IDPedido
, COUNT(*) AS Consecutivo
FROM DetallePedidoFecha AS A
JOIN DetallePedidoFecha AS B
ON A.IDProducto=B.IDProducto
AND ((A.Fecha>=B.Fecha)
OR (A.Fecha=B.Fecha
AND A.IDPedido>=B.IDPedido))
GROUP BY A.IdProducto
, A.Fecha
, A.IDPedido
HAVING COUNT(*)<3
== La vista es solo para simplificar la consulta pero no mejora el
desempeno.
Si no la requieres simplemente copia el SELECT y reemplazas la vista entre
parentisis.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Daniel Diez" wrote in message
news:
Tenemos
Tabla Pedido (IDPedido, Fecha...)
Tabla PedidoDetalle (ID, IDPedido, IDProducto...)
Tabla Producto (IDProducto,...)

Quiero saber el IDPedido y la Fecha y el IDProducto de los ultimos n


Pedidos
para cada uno de los
productos. Es decir para cada producto saber cuando los n ultimos pedidos


en
que se vendio.

Si hubiese 5 productos y todos se hubiesen vendido mas de 3 veces y pido


los
3 ultimos pedidos de cada uno la consulta debiera devolver 15 lineas

La consulta debiera devolver el IDPedido, Fecha, IDProducto con nulos si


el
producto no se ha vendido nunca. Si se ha vendido mas de una vez con la
misma Fecha debe devolver el de mayor IDPedido





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida