Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Ayuda con consulta

Estas en el tema de Ayuda con consulta en el foro de SQL Server en Foros del Web. Buenas noches. Lo que quiero es agrupar por el codigo y mostrarlos, siempre que el que codigo distinto no sea mayor que dos Imaginemos que ...
  #1 (permalink)  
Antiguo 24/09/2010, 15:11
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 15 años, 4 meses
Puntos: 31
Ayuda con consulta

Buenas noches.

Lo que quiero es agrupar por el codigo y mostrarlos, siempre que el que codigo distinto no sea mayor que dos

Imaginemos que tengo estos datos en la base de datos:

Codigo | Dia
1 1
1 2
1 3
2 1
3 1
3 2
3 3
3 4
4 1
5 1
5 2
5 3

Querria mostrar esto:

Codigo | Dia
1 2
1 3
2 1
3 3
3 4
4 1
5 2
5 3

Es decir quiero agrupar por codigo mostrando todos los códigos pero como mucho dos por cada distinto codigo y el dia mayor de esos codigos.

Me suena que hay que hacer algun where having count(*) o algo asi, pero llevo dandole vueltas y en google no se como buscarlo.

gracias.
__________________
La nueva red social de quinielas quiniela resultados
Cazaresultados Futbol base en directo
  #2 (permalink)  
Antiguo 24/09/2010, 15:56
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Ayuda con consulta

Buenas Tardes triqui, por la forma de tus datos creo que puedes hacerlo así:

Código SQL:
Ver original
  1. SELECT T1.* FROM TuTabla T1 INNER JOIN
  2. (SELECT codigo, COUNT(*) AS total FROM TuTabla GROUP BY codigo) T2
  3. ON T1.codigo = T2.codigo
  4. WHERE T1.dia >= T2.total - 1

Pruébalo y comentas si te sirvió.

Saludos y buen fin de semana.
Leo.
  #3 (permalink)  
Antiguo 24/09/2010, 16:57
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 15 años, 4 meses
Puntos: 31
Respuesta: Ayuda con consulta

Probado y correcto.

Me gustaría hacerlo sin hacerlo con sin el inner sobre si mismo (siempre que sea posible). pero funciona fabuloso, me vale !


Bueno realmente queria mostrar los 10 primeros, un pequeño cambio con tu permiso.

gracias !

Código SQL:
Ver original
  1. SELECT T1.* FROM TuTabla T1 INNER JOIN
  2.       (SELECT codigo, COUNT(*) AS total FROM TuTabla GROUP BY codigo) T2
  3.       ON T1.codigo = T2.codigo
  4.       WHERE T1.dia >= T2.total - 9
__________________
La nueva red social de quinielas quiniela resultados
Cazaresultados Futbol base en directo

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:39.