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

Consulta SQL - Group By

Estas en el tema de Consulta SQL - Group By en el foro de Bases de Datos General en Foros del Web. Buenas, tengo la siguente consulta: select comp.id, comp.fecha, comp.tipocomp, comp.nrocomp, comp.condicion, comp.total, clie.idcliente, clie.razonsoc from comprobantes comp left join clientes clie on clie.id=comp.idcliente where comp.fecha>='2015/01/01' ...
  #1 (permalink)  
Antiguo 15/08/2015, 23:54
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 11 meses
Puntos: 0
Consulta SQL - Group By

Buenas, tengo la siguente consulta:

select comp.id, comp.fecha, comp.tipocomp, comp.nrocomp, comp.condicion, comp.total, clie.idcliente, clie.razonsoc
from comprobantes comp
left join clientes clie on clie.id=comp.idcliente
where comp.fecha>='2015/01/01' and comp.fecha<='2015/01/31' and comp.condicion='EFT' or comp.condicion='CTA'
order by clie.razonsoc, comp.fecha

La consulta funciona bien, pero le quiero agregar una columna Count (clie.razonsoc) as Cantidad
la idea es contar los comprobantes que hay p/c cliente, espero que la imagen ayude.
http://es.zimagez.com/zimage/consulta.php
  #2 (permalink)  
Antiguo 16/08/2015, 00:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta SQL - Group By

Primero, no se ve ninguna imagen. Subela a un repositorio público y publica el enlace IMG.
Segundo, para usar COUNT () en esa consulta, deberás hacer también un GROUP BY, o de lo contrario disparará un error.

Finalmente, ¿con que DBMS estas trabajando?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/08/2015, 10:28
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL - Group By

Es en Interbase.
Asi es, si le pongo el Count y el Group By me salta error, lo que busco es una alternativa para que me salga tal cual como se ve en la imagen:

  #4 (permalink)  
Antiguo 16/08/2015, 10:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta SQL - Group By

con que manejador de bases de datos estas trabajando???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 16/08/2015, 11:03
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL - Group By

DBMS: Interbase desarrollado por Codegear
  #6 (permalink)  
Antiguo 16/08/2015, 11:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta SQL - Group By

Interbase cuando haces un group by ocupa que las columnas implicadas en el select sean las que esten en el group by algo como esto:

Código SQL:
Ver original
  1. SELECT COUNT(emp_no), job_country FROM Employee  
  2.       GROUP BY job_country

para tu ejemplo prueba con esto:

Código SQL:
Ver original
  1. SELECT clie.idcliente, COUNT(clie.razonsoc) AS total
  2. FROM comprobantes comp
  3. LEFT JOIN clientes clie ON clie.id=comp.idcliente
  4. WHERE comp.fecha>='2015/01/01' AND comp.fecha<='2015/01/31' AND comp.condicion='EFT' OR comp.condicion='CTA'
  5. GROUP BY clie.idcliente
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 16/08/2015, 11:55
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL - Group By

Buenas, gracias x responder, con respecto a esa consulta ya la habia probado y funciona bien, pero solo me trae dos campos (el clie.idcliente y total) y no es lo que busco.
La pregunta es: ¿Es posible traer la info como se ve en la imagen? o es demasiado rebuscado?
  #8 (permalink)  
Antiguo 16/08/2015, 12:05
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta SQL - Group By

si se puede, seria algo asi:



Código SQL:
Ver original
  1. SELECT * FROM
  2. FROM comprobantes comp
  3. LEFT JOIN clientes clie ON clie.id=comp.idcliente
  4. LEFT JOIN (
  5. SELECT clie.idcliente, COUNT(clie.razonsoc) AS total
  6. FROM comprobantes comp
  7. LEFT JOIN clientes clie ON clie.id=comp.idcliente
  8. WHERE comp.fecha>='2015/01/01' AND comp.fecha<='2015/01/31' AND comp.condicion='EFT' OR comp.condicion='CTA'
  9. GROUP BY clie.idcliente
  10. ) AS t1 ON (t1.idcliente=clientes.idcliente)
  11. WHERE comp.fecha>='2015/01/01' AND comp.fecha<='2015/01/31' AND comp.condicion='EFT' OR comp.condicion='CTA'
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 16/08/2015, 13:09
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL - Group By

Es una alternativa pero no funciona, tira error. Tambien probé con algo parecido pero pasa lo mismo.

Código SQL:
Ver original
  1. SELECT comp.id, comp.fecha, comp.tipocomp, comp.nrocomp, comp.condicion, comp.total, clie.idcliente, clie.razonsoc
  2.   FROM comprobantes comp
  3.   LEFT JOIN clientes clie ON clie.id=comp.idcliente
  4.   LEFT JOIN (SELECT clie.idcliente, COUNT(clie.razonsoc) AS total
  5.                 FROM comprobantes comp
  6.                 LEFT JOIN clientes clie ON clie.id=comp.idcliente
  7.                 WHERE comp.fecha>='2015/01/01' AND comp.fecha<='2015/01/31' AND comp.condicion='EFT' OR comp.condicion='CTA'
  8.              GROUP BY clie.idcliente) AS t1 ON (t1.idcliente=clie.idcliente)
  9.   WHERE comp.fecha>='2015/01/01'  AND comp.fecha<='2015/01/31' AND comp.condicion='EFT' OR comp.condicion='CTA'
  10.   ORDER BY clie.razonsoc, comp.fecha
  #10 (permalink)  
Antiguo 17/08/2015, 12:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta SQL - Group By

que error te tira??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 18/08/2015, 12:43
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL - Group By

Código SQL:
Ver original
  1. Error at line 1
  2. Dynamic SQL Error
  3. SQL error code = -104
  4. Token UNKNOWN - line 4, CHAR 16
  5. SELECT
  6. SQL - SELECT comp.id, comp.fecha, comp.tipocomp, comp.nrocomp, comp.condicion, comp.total, clie.idcliente, clie.razonsoc
  7.       FROM comprobantes comp
  8.       LEFT JOIN clientes clie ON clie.id=comp.idcliente
  9.       LEFT JOIN (SELECT clie.idcliente, COUNT(clie.razonsoc) AS total
  10.                     FROM comprobantes comp
  11.                     LEFT JOIN clientes clie ON clie.id=comp.idcliente
  12.                     WHERE comp.fecha>='2015/01/01' AND comp.fecha<='2015/01/31' AND comp.condicion='EFT' OR comp.condicion='CTA'
  13.                  GROUP BY clie.idcliente) AS t1 ON (t1.idcliente=clie.idcliente)
  14.       WHERE comp.fecha>='2015/01/01'  AND comp.fecha<='2015/01/31' AND comp.condicion='EFT' OR comp.condicion='CTA'
  15.       ORDER BY clie.razonsoc, comp.fecha
  #12 (permalink)  
Antiguo 18/08/2015, 13:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta SQL - Group By

y ese query???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 18/08/2015, 13:45
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL - Group By

Es la consulta que me tira error
  #14 (permalink)  
Antiguo 18/08/2015, 13:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta SQL - Group By

parece ser un error de sintaxis o de un caracter mal colocado....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 18/08/2015, 15:03
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL - Group By

Si el error se dá en el segundo select, nunca entra a esa parte de la consulta

Etiquetas: group, select, sql
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 14:27.