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 28-10-2011
sabueso1010 sabueso1010 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 31
Poder: 0
sabueso1010 Va por buen camino
Talking Error con Sql Group By

Hola foro, tengo el siguiente codigo y me marca el error que muestro al final de este tema

Código Delphi [-]
filtro:='SELECT codigo, fecharec, facturafolio, fecha_vence, cobrarcodigo, cobrarnombre, moneda, sum(total), sum(abonos), sum(saldo), total, abonos, saldo, estado from '+#34+qtabla+#34+' where estado = '+quotedstr('FACTURADO');

if rg3.itemindex=1 then filtro:=filtro+' and cobrarcodigo  = '+#34+edit1.text+#34;
if rg3.itemindex=2 then filtro:=filtro+' and cobrarcodigo  = '+#34+edit1.text+#34+' and moneda = "PESOS" ';
if rg3.itemindex=3 then filtro:=filtro+' and cobrarcodigo  = '+#34+edit1.text+#34+' and moneda = "DOLARES" ';
filtro:=filtro+' Group by facturafolio ';

with data.qfacturas do begin
  close;
  SQL.Clear;
  SQL.Add(filtro);
  open;
end;

Error mostrado en tiempo de ejecucion
class edbenginneerror with message " when GROUP BY exists,
every simple field in projectors must be in GROUP BY."
Responder Con Cita
  #2  
Antiguo 28-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pon un punto de ruptura en "Open" y mira qué valor tiene la variable "filtro".
Pegas ese texto en el ibexpert o en el manejador de bases de datoa que uses y ya nos cuentas.
Porque no podemos ayudarte demasiado si no sabemos qué valores tienen esos edits.
Responder Con Cita
  #3  
Antiguo 28-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
lo que el mensaje quiere decirte es que cuando usas la clausula Group debes agrupar por todos los campos que utilizas en el select

Ejemplo

Código SQL [-]
 
 
Select Campo1, Campo2, Campo3, Sum(campo4) From Tabla Group by Campo1  --> ERROR
Select Campo1, Campo2, Campo3, Sum(campo4) From Tabla Group by Campo1, Campo2, Campo3  --> Correcto

asi como te dice casimiro primero verifica que contiene la cadena
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 28-10-2011
sabueso1010 sabueso1010 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 31
Poder: 0
sabueso1010 Va por buen camino
Question creo que ando perdido entonces

creo que lo que pasa es que no se que funcion de sql usar , explico mejor lo que quiero hacer haber que consejo me dan de como hacerlo
. Tengo 1 tabla con ventas o remisiones que despues se facturan en 1 factura puede incluir varias ventas o remisiones. ejemplo de la tabla

Código Delphi [-]
Campos
Folio_venta  , fecha_venta, Cliente,     Total, Factura
----------------------------------------------------
  1                01/01/01          1         10           1150  
  2                01/01/01          1         50           1180
  3                01/01/01          1         30           1150
  4                01/01/01          1         10           1151  
  5                01/01/01          1         80           1180
  6                01/01/01          1         65           1150
  7                01/01/01          1         43           1151  
  8                01/01/01          1         21           1180
  9                01/01/01          1         74           1151


lo que necesito es que en el dbgrid o mi sql filtre me agrupe por factura es decir de la factura 1150 y el total de ventas y luego la 1151 igual , luego la 1180, etc etc
como puedo hacer eso con sql, utilizo BDE como motor de datos, saludos.
Responder Con Cita
  #5  
Antiguo 28-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
primero pides manzanas y luego tomates....

seria mas o menos asi

Código SQL [-]
 
Select Factura, Sum (total) As Total From tabla Group by Factura
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 29-10-2011
sabueso1010 sabueso1010 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 31
Poder: 0
sabueso1010 Va por buen camino
Question jaja tienes razon ascarac

bueno pido una disculpa como no sabia ni tenia idea de como hacer lo que quiero hacer creo que me explique mal desde el principio, ups, pero aun asi no me sirve aun que funciona la solucion de ascarac por que solo me da asi 2 campos en la dbgrid o view, lo que ocupo es presisamente esa suma pero en conjunto con todos los demas datos de la tabla, osea que me muestre solo 1 registro por factura aun que existan varias ventas que esten incluidas en 1 factura, osea existen ejemplo 5 registros de ventas que pertenecen a una factura, en la tabla existen 5 registros pero solo quiero ver uno por cada factura, alguien me puede apoyar ?

saludos.
Responder Con Cita
  #7  
Antiguo 29-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
utilizando el ejemplo (DATOS) que has colocado...
podrias mostrar lo que necesitas ?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 29-10-2011
sabueso1010 sabueso1010 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 31
Poder: 0
sabueso1010 Va por buen camino
gracias oscarar

mira pondre ejemplo de datos anterior como esta y como lo ocuparia
asi esta la tabla actualmente y eso visualizo en el dbgrid

Código Delphi [-]
Campos
Folio_venta  , fecha_venta, Cliente,     Total, Factura
----------------------------------------------------
  1                01/01/01          1         10           1150  
  2                01/01/01          1         50           1180
  3                01/01/01          1         30           1150
  4                01/01/01          1         10           1151  
  5                01/01/01          1         80           1180
  6                01/01/01          1         65           1150
  7                01/01/01          1         43           1151  
  8                01/01/01          1         21           1180
  9                01/01/01          1         74           1151
como veras existen 3 registros de venta con direfentes folios_venta pero con el mismo numero de factura
es decir que esas 3 ventas se facturaron en 1 sola factura unica, lo que ocupo hacer es que por cada factura acumule los folios de venta ejemplo claro existe la factura 1150 en 3 de los folios de venta entonces quiero que aparezca algo asi con 1 solo registro por factura

Campos aqui ya el campo folio de venta no lo ocupo

Código Delphi [-]
fecha_venta, Cliente,     Total, Factura
----------------------------------------------------
 01/01/01          1         105         1150  
 01/01/01          1         127         1151  
 01/01/01          1         151         1180

saludos y espero explicarme !!!!
Responder Con Cita
  #9  
Antiguo 29-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Entonces es asi
mira que dificil

Código SQL [-]
Select fecha, Cliente, Factura, Sum (total) As Total From tabla Group by fecha, Cliente, Factura
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #10  
Antiguo 29-10-2011
Avatar de orioncomputer
orioncomputer orioncomputer is offline
Miembro
 
Registrado: may 2006
Ubicación: Maturin, Monagas, Venezuela
Posts: 18
Poder: 0
orioncomputer Va por buen camino
Post

Saludos,

Si Aplicas o Adaptas a tu consulta el Ejemplo que te puso oscarac
Código SQL [-]
Select Factura, Sum (total) As Total From tabla Group by Factura
Este quedaria Así:
Código SQL [-]
Select fecha_venta, Cliente, Sum(Total) AS Total, Factura
From tabla Group by fecha_venta, Cliente, Factura

Cualquier Duda, no dudes en preguntar.....
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
Group By fcios Firebird e Interbase 4 05-11-2008 05:11:27
Group by no trabaja, marca error 104 ilichhernandez SQL 6 26-06-2008 12:35:13
Impresion de group header group footer Manuel Impresión 3 11-11-2007 01:05:23
consultas anidadas: group by dentro otro group by DobleSiete SQL 7 31-01-2005 14:59:31
Group Header, Detail y Footer Group en la misma pagina MarcelRuz Impresión 0 20-04-2004 23:27:14


La franja horaria es GMT +2. Ahora son las 19:43:33.


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