Ayuda con una consulta

07/04/2004 - 09:55 por Tomas Martin | Informe spam
Tengo una tabla 'Ventas' con las columnas :

Fecha, Factura, tipo, .

Necesito montar una consulta (o SP) que me devuelva las filas de 'ventas' de
las tres últimas facturas (orden por fecha) anteriores a una fecha dada de
un tipo determinado

Ejemplo:
fecha factura Tipo
1 01/01 001 X
2 01/02 001 X
3 01/03 002 O
4 01/04 005 X
5 01/05 002 O
6 01/06 003 X
7 01/07 004 O
8 01/08 005 X
9 01/09 004 O
10 01/10 005 X
11 01/11 006 X
12 01/12 006 X
.

para la fecha >01/12 y tipo X me devolvería las filas: 12,11,10,8,6 y 4 ya
que las tres últimas facturas que cumplen la condicion son la 006,005 y 003

gracias

TomasMM

Preguntas similare

Leer las respuestas

#11 Javier Loria
13/04/2004 - 18:16 | Informe spam
Hola Tomas:
El SELECT DISTINCT TOP 3 se aplica unicamente a la linea que tiene
Factura
SELECT Tabla.fecha
, Tabla.Factura
, Tabla.Fecha
, Tabla.Tipo
FROM Tabla
JOIN (SELECT DISTINCT TOP 3 Factura
FROM Tabla
WHERE Fecha<='2004-01-12'
AND Tipo='X'
ORDER BY Fecha DESC) AS FactSel
ON Tabla.Factura=FactSel.Factura
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.
Tomas Martin <t o m a s m m [ARROBA] m i c r o v e n [punto] n e t>
escribio:
Mostrar la cita
#12 Javier Loria
13/04/2004 - 18:59 | Informe spam
Hola Tomas:
Diculpa, no lei bien tu correo, y ahora entendi el problema.
Si cambias y en lugar de DISTINCT haces un GROUP BY? No estoy muy seguro
que funcione pero prueba:
=...
(SELECT TOP 3 Factura
FROM Tabla
WHERE Fecha<='2004-01-12'
AND Tipo='X'
GROUP BY Factura
ORDER BY MAX(Fecha) DESC)

== Suerte,

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.



Tomas Martin <t o m a s m m [ARROBA] m i c r o v e n [punto] n e t>
escribio:
Mostrar la cita
#13 Tomas Martin
14/04/2004 - 09:31 | Informe spam
¡¡¡ B I N G O !!! Perfecto Javier. Funciona exactamente como yo deseaba.
Muchisimas gracias.
Dejo la sentencia definitiva por si alguien estaba siguiendo este hilo:

SELECT Tabla.fecha
, Tabla.Factura
, Tabla.Fecha
, Tabla.Tipo
FROM Tabla JOIN
(
SELECT TOP 3 Factura
FROM Tabla
WHERE Fecha<='2004-01-12' AND Tipo='X'
GROUP BY Factura
ORDER BY MAX(Fecha) DESC
)
AS FactSel
ON Tabla.Factura=FactSel.Factura

Tomás Martín

P.D.: Javier, una curiosidad. No acabo de entender el texto que pones bajo
tu firma ('Se aprecia la inclusión ...'). Lo podrías explicar?
#14 Tomas Martin
14/04/2004 - 09:45 | Informe spam
¡¡¡ B I N G O !!! Perfecto Javier. Funciona exactamente como yo deseaba.
Muchisimas gracias.
Dejo la sentencia definitiva por si alguien estaba siguiendo este hilo:

SELECT Tabla.fecha
, Tabla.Factura
, Tabla.Fecha
, Tabla.Tipo
FROM Tabla JOIN
(
SELECT TOP 3 Factura
FROM Tabla
WHERE Fecha<='2004-01-12' AND Tipo='X'
GROUP BY Factura
ORDER BY MAX(Fecha) DESC
)
AS FactSel
ON Tabla.Factura=FactSel.Factura

Tomás Martín
#15 Javier Loria
14/04/2004 - 17:12 | Informe spam
Hola Tomas:
Me alegro mucho que te funcione.
Lo de la firma es promoviendo a que los que posteen preguntas
relacionadas con T-SQL envien el codigo en SQL necesario para crear las
Tablas, Insertar filas, etc. que uno pueda copiar del mensaje y pegarlo en
el Query Analizer. Esto hace mas facil revisar la sintaxis de las respuestas
y probar que el resultado es el deseado.
Por ejemplo, hace poco Raul Romero envio el siguiente posteo:
==Raul Romero escribio:
Mostrar la cita
== Es mas probable que esta pregunta sea respondida correctamente a la
primera, ya que no deja dudas a interpretaciones y cualquiera que quiera
constestar puede copiar el codigo pegarlo en el QA y hacer pruebas con
diferentes SELECT's. Por otra parte los que siguen el foro solo por
aprender sacan mas provecho de la pregunta.


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.

"Tomas Martin" <t o m a s m m [ARROBA] m i c r o v e n [punto] n e t> wrote
in message news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida