Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-05-2006
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 22
apicito Va por buen camino
Problema con group by

Porqué si a esta consulta:
Código Delphi [-]
      SQL.Add('select A.SESASU_GRUPO,A.SESASU_ASUNTO as ASUNTO');
      SQL.Add('from SES'+Part+'ASU A join SES'+Part+'GRU G on G.SESGRU_CODIGO=A.SESASU_GRUPO');
      Sql.Add('where G.SESGRU_MOSTRAR=1');
      SQL.Add('and A.SESASU_SESION='+#39+inttostr(SesCodigo)+#39);
      SQL.Add('union');
      if Datos.CargaIni('Servidor','SOperativo')='Linux' then
        SQL.Add('select A.SESASU_GRUPO,string2blob(G.SESGRU_DESCRIP) as ASUNTO')
      else
        SQL.Add('select A.SESASU_GRUPO,F_STRBLOB(G.SESGRU_DESCRIP) as ASUNTO');
      SQL.Add('from SES'+Part+'ASU A join SES'+Part+'GRU G on G.SESGRU_CODIGO=A.SESASU_GRUPO');
      Sql.Add('where G.SESGRU_MOSTRAR=0');
      SQL.Add('and A.SESASU_SESION='+#39+inttostr(SesCodigo)+#39);
      Sql.Add('group by A.SESASU_GRUPO,G.SESGRU_DESCRIP');
le añado en los select el campo A.SESASU_NUMERO que es un contador dentro del grupo (A.SESASU_GRUPO) de esta forma:
Código Delphi [-]
      SQL.Add('select A.SESASU_GRUPO,A.SESASU_ASUNTO as ASUNTO,A.SESASU_NUMERO');
      SQL.Add('from SES'+Part+'ASU A join SES'+Part+'GRU G on G.SESGRU_CODIGO=A.SESASU_GRUPO');
      Sql.Add('where G.SESGRU_MOSTRAR=1');
      SQL.Add('and A.SESASU_SESION='+#39+inttostr(SesCodigo)+#39);
      SQL.Add('union');
      if Datos.CargaIni('Servidor','SOperativo')='Linux' then
        SQL.Add('select A.SESASU_GRUPO,string2blob(G.SESGRU_DESCRIP) as ASUNTO,A.SESASU_NUMERO')
      else
        SQL.Add('select A.SESASU_GRUPO,F_STRBLOB(G.SESGRU_DESCRIP) as ASUNTO,A.SESASU_NUMERO');
      SQL.Add('from SES'+Part+'ASU A join SES'+Part+'GRU G on G.SESGRU_CODIGO=A.SESASU_GRUPO');
      Sql.Add('where G.SESGRU_MOSTRAR=0');
      SQL.Add('and A.SESASU_SESION='+#39+inttostr(SesCodigo)+#39);
      Sql.Add('group by A.SESASU_GRUPO,G.SESGRU_DESCRIP');
me da error de :
Invalid expression in the Select list (not contained in either an aggregate function or the GROUP BY clause).
Responder Con Cita
  #2  
Antiguo 12-05-2006
Avatar de waltergomez
waltergomez waltergomez is offline
Miembro
 
Registrado: may 2006
Posts: 202
Poder: 19
waltergomez Va por buen camino
Tenes que agregar A.SESASU_NUMERO en la clausula GROUP BY.

Salu2,
Responder Con Cita
  #3  
Antiguo 12-05-2006
Avatar de gzerox
gzerox gzerox is offline
Miembro
 
Registrado: may 2004
Ubicación: Edo Nueva Esparta, Venezuela
Posts: 10
Poder: 0
gzerox Va por buen camino
Saludos amigo

tu pregunta esta un poco confusa, te sugiero que coloques cada una de las tablas que usas en tu sentencia con una breve descripcion de cada campo, ademas de cual es el resultado que quieres obtener, para ver si asi te podemos ayudar.
__________________
Lic. Gabriel J. Bermúdez M.
Ayudar es de amigos...

Última edición por gzerox fecha: 12-05-2006 a las 15:00:49.
Responder Con Cita
  #4  
Antiguo 12-05-2006
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 22
apicito Va por buen camino
waltergomez
Si añado A.SESASU_NUMERO en el group by todos los registros serian diferentes, por lo que no conseguiería lo deseado: que solo aparezca un registro por cada código de grupo en el segundo select. Este campo necesitaría incluirlo para que los resultados del primer select aparecieran ordenados por Grupo y, dentro de este, por numero.

gzerox
El enlace es hacía este mismo hilo.
Responder Con Cita
  #5  
Antiguo 13-05-2006
Avatar de waltergomez
waltergomez waltergomez is offline
Miembro
 
Registrado: may 2006
Posts: 202
Poder: 19
waltergomez Va por buen camino
apicito, mi respuesta es correcta dada tu pregunta.

Cita:
me da error de :
Invalid expression in the Select list (not contained in either an aggregate function or the GROUP BY clause).
Lee cualquier Tutorial o Help de SQL y te daras cuenta como funciona la clausula ORDER BY.
Ademas creo que estas confundiendo GroupBy con Order By.

Cita:
Este campo necesitaría incluirlo para que los resultados del primer select aparecieran ordenados por Grupo y, dentro de este, por numero.
Saludos,
Responder Con Cita
  #6  
Antiguo 15-05-2006
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 22
apicito Va por buen camino
waltergomez Gracias por responder y perdona por no explicarme como es debido. Voy a intertarlo de nuevo:
Mi problema está en que necesito añadir en el select el campo A.SESASU_NUMERO para posteriormente hacer un order by que lo incluya (esto no aparece el el trozo de código que pegué) pero no quiero incluirlo en el group by porque solo quiero agrupar por group by A.SESASU_GRUPO,G.SESGRU_DESCRIP ya que sino me aparecerían todos los registros en el segundo select.
Realmente me llegaría con agrupar solo por A.SESASU_GRUPO, pero si lo hago así me dá el error de Invalid expression in the Select list (not contained in either an aggregate function or the GROUP BY clause).
Esto es lo que no entiendo, ya que mirando manuales y ejemplos de group by entiendo que se puede hacer group by sobre una sola columna del select.
Responder Con Cita
  #7  
Antiguo 19-05-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por apicito
Esto es lo que no entiendo, ya que mirando manuales y ejemplos de group by entiendo que se puede hacer group by sobre una sola columna del select.
Estás mal, los group by deben ser usadas con funciones de agrupamiento (Max, Sum, Min, Etc..), cosa que no veo es tu consulta, eso es !!

Hasta Luego -
__________________
No todo es como parece ser...
Responder Con Cita
  #8  
Antiguo 23-05-2006
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 22
apicito Va por buen camino
Gracias, no lo sabía.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
consultas anidadas: group by dentro otro group by DobleSiete SQL 7 31-01-2005 14:59:31
Select...group By JorgeBec SQL 2 02-12-2004 17:27:25
problema con group by raudelink SQL 2 18-10-2004 21:19:05
Group Header, Detail y Footer Group en la misma pagina MarcelRuz Impresión 0 20-04-2004 23:27:14
Problema con Group en qreport seken Impresión 1 18-06-2003 23:32:50


La franja horaria es GMT +2. Ahora son las 14:44:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi