Principales respuestas
8 Maximos

Pregunta
-
Buenas tardes;
Trabajo con SQL Server y tengo el siguiente dilema.
Tengo una serie de telefonos que estan en la columna TELEFONOS, y luego por otra parte tengo una columna identificatoria de cada llamada realizadas con esos telefonos.
Necesitaria una query que me permitiera sacar los 8 maximos resultados de ID, DECADA TELEFONO
La query base por decirlo de alguna manera seria la siguiente:
select telefonos, ID
FROM TABLATELEFONOS
WHERE telefonos IN ('tlf1','tlf2','tlf3','tlf4','etc','etc2','muchos etc')
ORDER BY ID DESD
Esta QUERY me sacaria todas las llamadas de esos telefonos y me los ordenaria por ID
pero necesito para cada IN que es un tlfx, me saque solo los 8 maximos ID (DE CADA TELEFONO), no todos los ID de cada telefono.
Muchas gracias
Respuestas
-
Intenta lo siguiente:
WITH T AS ( SELECT telefonos, ID, ROW_NUMBER() OVER(PARTITION BY telefonos ORDER BY ID DESC) [F] FROM TABLATELEFONOS WHERE telefonos IN('tlf1', 'tlf2', 'tlf3', 'tlf4') ) SELECT telefonos, ID FROM T WHERE F <= 8 ORDER BY telefonos, ID; GO
- Propuesto como respuesta Alejandro Higuera martes, 14 de noviembre de 2017 12:17
- Marcado como respuesta Pablo RubioModerator jueves, 16 de noviembre de 2017 21:49
Todas las respuestas
-
Intenta lo siguiente:
WITH T AS ( SELECT telefonos, ID, ROW_NUMBER() OVER(PARTITION BY telefonos ORDER BY ID DESC) [F] FROM TABLATELEFONOS WHERE telefonos IN('tlf1', 'tlf2', 'tlf3', 'tlf4') ) SELECT telefonos, ID FROM T WHERE F <= 8 ORDER BY telefonos, ID; GO
- Propuesto como respuesta Alejandro Higuera martes, 14 de noviembre de 2017 12:17
- Marcado como respuesta Pablo RubioModerator jueves, 16 de noviembre de 2017 21:49
-
-
No veo el futuro, pero se comportara PESIMO, sobre todo utilizando IN, ¿Que hacer?, convertir los valores que estan en el IN en tabla y substituir el IN por el EXISTS, simple
- Editado iislas (MCP MCTS MPN DWA, Azure SQL Server) martes, 14 de noviembre de 2017 19:20