Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-05-2022
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Obvio no queremos miles de registros, pero un conjunto pequeño que muestre los datos (en texto) permite validar el resultado.
__________________
El malabarista.
Responder Con Cita
  #2  
Antiguo 12-05-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Al margen de que en cuanto pueda subiré una muestra de los registros de las tablas implicadas, hay una coas que me llama la atención en los dos últimos querys que puse. A ver si alguno me lo explica:
Código SQL [-]
SELECT COUNT(DISTINCT A.Codigo) Recibos, A.Periodo, A.Forma, A.NomJunta,
       (SELECT SUM(Cuota) FROM Cuotas WHERE Codigo = A.Codigo) Importe
  FROM Rc03 A
 WHERE A.PerPago = 2
   AND A.ForPago IN (2,4)
 GROUP BY A.PerPago, A.Periodo, A.ForPago, A.Forma, A.Junta, A.NomJunta
 ORDER BY PerPago, Forma, NomJunta
Si este query lo intento ejecutar tal y como está me da el error que antes citaba:
Cita:
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
Si en el group by incluyo ese subselect, como parece indicar el error, me genera el mismo error. ¿Cómo es posible? Es más: si os fijáis en el group by hay más columas que las que hay en el select y sin embargo no da error por esa razón.
Responder Con Cita
  #3  
Antiguo 12-05-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Obvio no queremos miles de registros, pero un conjunto pequeño que muestre los datos (en texto) permite validar el resultado.
Os adjunto algunos datos de las tablas Persona, Cuotas e Instalacion. El campo NomJunta o Municipio de los querys puede suprimirse tranquilamente del select. La primera línea de cada uno de los ficheros indica los nombres de los campos.
Archivos Adjuntos
Tipo de Archivo: rar Datos.rar (1,4 KB, 6 visitas)
Responder Con Cita
  #4  
Antiguo 13-05-2022
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 14
engranaje Va por buen camino
A ver si puedo ser de ayuda.
Entiendo que una consulta como esta:
Código SQL [-]
 (Select A.codigo, A.Periodo, A.Forma, A.NomJunta, SUM(Cuotas.Cuota) importeCuota
 from
 Rc03 A inner join Cuotas on A.codigo = Cuotas.codigo
 WHERE A.PerPago = 2
 AND A.ForPago IN (2,4)
 GROUP BY A.codigo,A.Periodo, A.Forma, A.NomJunta
 ORDER BY A.PerPago, A.Forma, A.NomJunta

Mostrará el sumatorio de los importes de cada uno de los códigos de cuota posible en cada tupla periodo,forma, nomjunta que cumple el filtro.

Entiendo que esto no es lo que quieres porque querrías cuantos códigos de cuota posibles distintos hay y el importe total de de todos esos código. Propongo esta consulta par probar:
Código SQL [-]
Select count(codigo) Recibos, Periodo, Forma, NomJunta, sum(importeCuota) importe
from
 (Select A.codigo, A.Periodo, A.Forma, A.NomJunta, SUM(Cuotas.Cuota) importeCuota
 from
 Rc03 A inner join Cuotas on A.codigo = Cuotas.codigo
 WHERE A.PerPago = 2
 AND A.ForPago IN (2,4)
 GROUP BY A.codigo,A.Periodo, A.Forma, A.NomJunta
 ORDER BY A.PerPago, A.Forma, A.NomJunta)
 group by Peridodo, Forma, NomJunta

si no he cometido ningún error al escribirlas estas consultas deberían ejecutarse sin problema. ¿Podrías probarlas y comentar si los resultados de las dos se ajustan a lo que esperas o si la primera ya muestra un importeCuota que no corresponde?

Última edición por engranaje fecha: 13-05-2022 a las 10:16:59.
Responder Con Cita
  #5  
Antiguo 13-05-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Gracias por la sugerencia pero ambas dan el mismo error de antes, con el agravante que en la segunda, al haber dos GROUP BY, no es posible saber a cual de ellos afecta auqnue parece que se a la primera línea del query:
Cita:
Invalid expression in the ORDER BY clause (not contained in either an aggregate function or the GROUP BY clause).
Además el campo CUOTA está incluido en la definición de la vista como se puede ver.
Responder Con Cita
  #6  
Antiguo 13-05-2022
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 14
engranaje Va por buen camino
Perdón, Sí parece que he cometido varios errores, esto escribiendo sin probar contra bd y sin tener las tablas y parece que he cometido unos cuantos errores de bulto.


Poniendo peridodo en lugar de periodo en el group by y entendiendo que el cuota que querías era el de cuotas y no la de Rc03. Las cambio un poco, a ver. Esta noche si no has resuelto aún probaré a montar una estructura en mi firebird probar que está claro que escribir así sin probar no es lo mio.

Código SQL [-]
 
 Select codigo, Periodo, Forma, NomJunta, SUM(Cuota) importeCuota 
 from  Rc03   
 WHERE PerPago = 2  
 AND ForPago IN (2,4) 
 GROUP BY codigo,Periodo, Forma, NomJunta  
ORDER BY PerPago, Forma, NomJunta


Código SQL [-]
Select count(codigo) Recibos, Periodo, Forma, NomJunta, sum(importeCuota) importe from  
( Select codigo, Periodo, Forma, NomJunta, SUM(Cuota) importeCuota  
 from  Rc03   
 WHERE PerPago = 2  
 AND ForPago IN (2,4)  
 GROUP BY codigo,Periodo, Forma, NomJunta 
 ORDER BY PerPago, Forma, NomJunta)  
 group by Periodo, Forma, NomJunta
Responder Con Cita
  #7  
Antiguo 14-05-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por engranaje Ver Mensaje
Perdón, Sí parece que he cometido varios errores, esto escribiendo sin probar contra bd y sin tener las tablas y parece que he cometido unos cuantos errores de bulto.
Ambos siguen dando el mismo error y no lo entiendo.
Cita:
Empezado por mamcx Ver Mensaje
Trate de convertir eso a sql, pero la vista dice que faltan campos. No entiendo porque eso en CSV (quizás me entendiste literalmente que en "texto" cuando me pusiste la imagen? Lo que quise decir es que no pongas imágenes!).
Vale. Te entendí mal, lo siento. En los ficheros que subí sólo incluí los campos que llamo en el query y, sí, tienes razón y debí incluir todos los que usa la vista. Trataré de arreglarlo.
Responder Con Cita
  #8  
Antiguo 18-05-2022
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 14
engranaje Va por buen camino
Puedes probar sí esta consulta:
Código SQL [-]
Select Codigo, PerPago, Forma, Periodo, NomJunta, SUM(Cuota) importeCuota   
from  Rc03    
WHERE PerPago = 2   
AND ForPago IN (2,4)  
GROUP BY Codigo, PerPago, Forma, Periodo, NomJunta
ORDER BY PerPago, Forma, NomJunta

te da un error:

Cita:
Invalid expression in the ORDER BY clause (not contained in either an aggregate function or the GROUP BY clause).
Como lo entiendo todos los campos en el select menos el SUM están en el group by, el problema indicado en el error es porque cometí otro error para variar y estaba ordenando por PerPago sin meterlo en el group by.
En esta sentencia todos los campos en el order by están en el group by también. ¿Puedes probar que esta sentencia se ejecuta sin problemas?
Responder Con Cita
  #9  
Antiguo 13-05-2022
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Angel.Matilla Ver Mensaje
Os adjunto algunos datos de las tablas Persona, Cuotas e Instalacion. El campo NomJunta o Municipio de los querys puede suprimirse tranquilamente del select. La primera línea de cada uno de los ficheros indica los nombres de los campos.
Trate de convertir eso a sql, pero la vista dice que faltan campos. No entiendo porque eso en CSV (quizás me entendiste literalmente que en "texto" cuando me pusiste la imagen? Lo que quise decir es que no pongas imágenes!).
__________________
El malabarista.
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
SELECT con SUM y COUNT Angel.Matilla Firebird e Interbase 18 13-06-2018 10:19:36
¿Select count sin group by? zazexx SQL 5 07-08-2008 15:27:11
Mejorar SELECT COUNT ferjavrec2 SQL 0 01-06-2007 21:00:00
valor de SELECT COUNT maruenda SQL 15 25-05-2007 22:58:38
Select Count (distinct X) lunatiko SQL 2 17-10-2004 21:06:45


La franja horaria es GMT +2. Ahora son las 05:48:45.


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