Filtrar consulta SQL

Hola experto espero me puedas ayudar!
He realizado una consulta en SQL que genera gran cantidad de registros por cada uno de los artículos existentes en mi tabla; sin embargo me piden que solo se visualicen los seis (6) primeros registros de cada artículo.
¿Cómo puedo hacer para que la consulta me refleje solo esa cantidad de registros?
Tengo otra consulta filtrada por artículo y en ella lo he controlado como el comando TOP colocándolo como "SELECT TOP 6" pero con varios artículos no he sabido como hacer... Agradezco tu ayuda en verdad es algo prioritario!
Gracias de antemano,

1 Respuesta

Respuesta
1
Si tienes sql2005 hay una alternativa mejor, sino con esto se puede hacer pero es muy costoso:
Estos son de la base northwind.
select * from (SELECT city,employeeid,hiredate,
(SELECT count(*) FROM employees as t2
WHERE t2.city = t1.city
and t2.hiredate <= t1.hiredate
group by city
) AS RowNum
FROM employees as t1
) T3
where t3.rownum < 2
Order by city, hiredate
En tu caso tendrías que agrupar por id_articulo en lugar de city y deberías usar algún criterio que puede ser la fecha para mostrar los 7 útlimos o bien quizá los montos más altos, ahí cambias la parte de hace referencia a hiredate.
Gracias experto... voy a ir trabajando con el ejemplo que me enviaste... sin embargo, estoy en SQL 2005 por lo que te agradecería comentarme la otra opción!
No lo he usado porque no trabajo con 2005, pero busca la funcin rank() y over partition, es como particionar los datos por articulo y aplicar un ranking para ordenarlos, después podes mostrar los que tengan determinado ranking.
Gracias experto,
Ya lo logre solucionar con otra sugerencia que me habían enviado, relacionada con las funciones ROW_NUMBER() Y OVER PARTITION, las cuales me dejaron crear una columna enumerando las filas de cada producto y con base a ello pude validar el número de registros a visualizar por cada producto.
Muchas gracias por tu interés!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas