SQL Server - Filtrar Datos (Complejo) Urgenteeeee!!!

 
Vista:

Filtrar Datos (Complejo) Urgenteeeee!!!

Publicado por Pablo (1 intervención) el 04/09/2007 18:23:25
Hola,
por favor estoy necesitando ayuda con una consulta, lo que necesito es poder ver las ultimas dos o x compras realizadas en rango de tiempo por articulo, la consulta que realicé lo que hace es traerme todas las compras por articulo, pero yo solo quiero ver 2 o x ultimas compras por articulo.
ejemplo :

coca cola $2 01/01/2007 } solo quiero ver estas dos
coca cola $3 25/01/2007 }
coca cola $3 01/02/2007
coca cola $5 01/03/2007
cepillo dental $2 01/01/2007 } solo quiero ver estas dos
cepillo dental $3 25/01/2007 }
cepillo dental $3 01/02/2007
cepillo dental $5 01/03/2007
vaso liso $2 01/01/2007 } solo quiero ver estas dos
vaso liso $3 25/01/2007 }
vaso liso $3 01/02/2007
vaso liso $5 01/03/2007

la consulta que yo realicé me trae todas las compras.... me han dicho de usar la funcion RANK. utilizo SQL SERVER 2000

Les dejo la consulta por favor ayudenme!!!!!!

SELECT dbo.PURC_ORDER_LINE.PART_ID, dbo.PART.DESCRIPTION, dbo.RECEIVER_LINE.PURC_ORDER_ID,
dbo.PURCHASE_ORDER.LAST_RECEIVED_DATE, dbo.RECEIVER_LINE.RECEIVED_QTY, dbo.PURC_ORDER_LINE.UNIT_PRICE,
dbo.PURCHASE_ORDER.VENDOR_ID, dbo.VENDOR.NAME
FROM dbo.VENDOR INNER JOIN
dbo.PURC_ORDER_LINE INNER JOIN
dbo.RECEIVER_LINE ON dbo.PURC_ORDER_LINE.LINE_NO = dbo.RECEIVER_LINE.PURC_ORDER_LINE_NO INNER JOIN
dbo.PURCHASE_ORDER ON dbo.RECEIVER_LINE.PURC_ORDER_ID = dbo.PURCHASE_ORDER.ID AND
dbo.PURC_ORDER_LINE.PURC_ORDER_ID = dbo.PURCHASE_ORDER.ID ON dbo.VENDOR.ID = dbo.PURCHASE_ORDER.VENDOR_ID INNER JOIN
dbo.PART ON dbo.PURC_ORDER_LINE.PART_ID = dbo.PART.ID
WHERE (NOT (dbo.PURC_ORDER_LINE.PART_ID LIKE 't%')) AND (dbo.PURC_ORDER_LINE.PART_ID BETWEEN 'AAA000201' AND 'AFC005151')
ORDER BY dbo.PURC_ORDER_LINE.PART_ID, dbo.PURCHASE_ORDER.LAST_RECEIVED_DATE DESC
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Filtrar Datos (Complejo) Urgenteeeee!!!

Publicado por Isaias (3308 intervenciones) el 04/09/2007 19:58:31
Pablo

Evita en lo posible utilizar textos como: "URGENTEEEEE !!!, AYUDA !!!, ME MUERO !!!", etc, en asunto.

Te dejo una query, adaptala a tus necesidades.

-- Creo mi tabla de pruebas
CREATE TABLE #COMPRAS (Descripcion varchar(60), importe smallmoney, fecha datetime)
-- Inserto mis registros de pruebas
insert into #COMPRAS values('coca cola', 2, '2007-01-01')
insert into #COMPRAS values('coca cola', 3, '2007-01-25')
insert into #COMPRAS values('coca cola', 3, '2007-02-01')
insert into #COMPRAS values('cepillo denta', 2, '2007-01-01')
insert into #COMPRAS values('cepillo denta', 3, '2007-01-25')
insert into #COMPRAS values('cepillo denta', 3, '2007-02-01')
insert into #COMPRAS values('cepillo denta', 5, '2007-03-01')
insert into #COMPRAS values('vaso liso', 2, '2007-01-01')
insert into #COMPRAS values('vaso liso', 3, '2007-01-25')
insert into #COMPRAS values('vaso liso', 3, '2007-02-01')
insert into #COMPRAS values('vaso liso', 5, '2007-03-01')
-- Genero mi Select
select *
from #COMPRAS as a
where (
select count(*)
from #COMPRAS as b
where b.Descripcion = a.Descripcion and b.fecha >= a.fecha
) <= 3
order by Descripcion asc, fecha desc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar