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

Problema con group by sql server

Estas en el tema de Problema con group by sql server en el foro de SQL Server en Foros del Web. Saludos, Tengo una duda con la clausula group by. Mi consulta es la siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT nombre , MAX ( ...
  #1 (permalink)  
Antiguo 08/08/2016, 11:37
 
Fecha de Ingreso: febrero-2015
Ubicación: Distrito Federal
Mensajes: 38
Antigüedad: 9 años, 2 meses
Puntos: 1
Problema con group by sql server

Saludos, Tengo una duda con la clausula group by.
Mi consulta es la siguiente:

Código SQL:
Ver original
  1. SELECT nombre, MAX(fecha),[tipo],[estatus] FROM Grupo g INNER JOIN Monitor m ON g.id = m.idGroup
  2. GROUP BY nombre,[tipo],[STATUS] ORDER BY MAX(txnDate) DESC

y obtengo como resultado lo siguiente:
nombre| fecha| tipo| estatus
Grupo1| 2016-08-04 15:51:38.193| 7| 00
Grupo1| 2016-08-03 15:58:30.517| 0| 02
Grupo1| 2016-07-29 10:48:43.443| 1| 00
Grupo1| 2016-07-29 10:48:07.283| -7| 00
Grupo1| 2016-07-29 10:48:02.913| 0| 00
Grupo1| 2016-07-29 10:47:59.757| -6| 00
Grupo1| 2016-07-29 10:37:26.157| 1| 02
Grupo1| 2016-07-29 10:17:14.070| 7| 02

El detalle es que intento que solo me salga un resultado en la consulta, lo que veo aquí es que me devuelve la fecha mayor de las posibles combinaciones entre tipo y estatus. Al estar seleccionando tipo y estatus fuera de la función de agregación MAX, sé que estoy obligado a ponerlos en group by, pero me gustaría saber si hay una forma de seleccionar solamente:

Nombre de grupo, la fecha mayo, de que tipo y que estatus sin que me coloque las fechas mayores de los demas tipos y estatus. Algo así:

nombre fecha tipo estatus
Grupo1 2016-08-04 15:51:38.193 7 00


Saludos!!!
  #2 (permalink)  
Antiguo 08/08/2016, 11:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con group by sql server

Algo como esto:

Código SQL:
Ver original
  1. SELECT t1.nombre, t1.fecha,t1.tipo,t1.STATUS FROM grupo AS t1
  2. INNER JOIN monitor m ON t1.id=m.idgroup
  3. INNER JOIN (SELECT MAX(fecha) AS fecha, nombre FROM grupo GROUP BY grupo) AS t2 ON (t1.nombre=t2.nombre AND t1.fecha=t2.fecha)

saludos,
Libras
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 08/08/2016, 11:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con group by sql server

Por lo pronto, verifica el GROUP BY, porque el campo que indicas no se llama "STATUS" como pones alli, sino "ESTATUS", que no es lo mismo:

Código SQL:
Ver original
  1. SELECT
  2.     nombre,
  3.     MAX(fecha),
  4.     [tipo],
  5.     [estatus]
  6. FROM Grupo g
  7.     INNER JOIN Monitor m ON g.id = m.idGroup
  8. GROUP BY
  9.     nombre,
  10.     [tipo],
  11.     [estatus]
  12. ORDER BY MAX(txnDate) DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: group-by, max
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 04:14.