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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-06-2020
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
Select List

En una base de datos en Firebird, ¿se puede hacer un SELECT LIST sobre una suma?
Código SQL [-]
SELECT LIST(SUM(A.Total))...
si se puede, ¿cómo?
Responder Con Cita
  #2  
Antiguo 08-06-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.096
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero sum() devuelve un solo valor, no puede ser una lista.
Responder Con Cita
  #3  
Antiguo 08-06-2020
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
Unhappy

¡Qué vergüenza! Ahora me he dado cuenta de que he hecho mal la pregunta. Efectivamente mi pregunta anterior es completamente absurda.
Responder Con Cita
  #4  
Antiguo 08-06-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.096
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cualquiera se equivoca, no hay vergüenza. Hasta yo mismo puedo equivocarme alguna vez
Responder Con Cita
  #5  
Antiguo 08-06-2020
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. A ver si ahora me explico mejor.

Tengo este query:
Código SQL [-]
SELECT SUM(A.Votos), C.Sigla, D.Electos, CASE WHEN C.Codigo < 0 THEN C.Codigo ELSE 1 END, B.Municipio
  FROM Resultados A, Mesas B, Partidos C, NumElectos D 
 WHERE A.CodPrv = (SELECT Literal FROM Instalacion WHERE Etiqueta = 'Provincia') 
   AND A.Proceso = (SELECT MAX(Codigo) FROM Elecciones WHERE CodPrv = A.CodPrv
                       AND Proceso = (SELECT Codigo FROM Proceso WHERE CodPrv = A.CodPrv AND Nombre = 'MUNICIPALES') AND Cerrado = 1) 
   AND A.CodPrv = B.CodPrv AND A.Mesa = B.Codigo
   AND A.CodPrv = C.CodPrv AND A.Partido = C.Codigo 
   AND A.CodPrv = D.CodPrv AND D.Tipo = 'J' AND B.Municipio = D.Circunscripcion AND A.Partido = D.Partido 
 GROUP BY 2, 3, 4, 5
 ORDER BY 5, 4 DESC, 3 DESC, 1 DESC
que genera una salida como esta

y me haría falta que la salida fuera más o menos así:
Cita:
PP 611 6,PSOE 472 3, 175
PP 376 5,PSOE 398 3, OTROS 356 1, 686
etc.
siendo el primer trozo la sigla, el segundo los votos y el tercero los electos. Y no se me ocurre cómo porque si pongo
Código SQL [-]
SELECT LIST(C.Sigla||' '||SUM(A.Votos)||' ' ||B.Municipio)...
me da este error:
Código:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Nested aggregate functions are not allowed.
Que entiendo indica que no se puede meter una función de este tipo (SUM, COUNT, etc.) dentro de un LIST.
Responder Con Cita
  #6  
Antiguo 08-06-2020
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 922
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Bueno, tendría que ser así mas o menos...

Código SQL [-]
SELECT LIST(Sigla||' '||Suma||Electos,',')
FROM 
    (SELECT SUM(A.Votos) as Suma, C.Sigla, D.Electos, CASE WHEN C.Codigo < 0 THEN C.Codigo ELSE 1 END, B.Municipio
     FROM Resultados A, Mesas B, Partidos C, NumElectos D 
     WHERE A.CodPrv = (SELECT Literal FROM Instalacion WHERE Etiqueta = 'Provincia') 
   AND A.Proceso = (SELECT MAX(Codigo) FROM Elecciones WHERE CodPrv = A.CodPrv
                       AND Proceso = (SELECT Codigo FROM Proceso WHERE CodPrv = A.CodPrv AND Nombre = 'MUNICIPALES') AND Cerrado = 1) 
   AND A.CodPrv = B.CodPrv AND A.Mesa = B.Codigo
   AND A.CodPrv = C.CodPrv AND A.Partido = C.Codigo 
   AND A.CodPrv = D.CodPrv AND D.Tipo = 'J' AND B.Municipio = D.Circunscripcion AND A.Partido = D.Partido 
 GROUP BY 2, 3, 4, 5
 ORDER BY 5, 4 DESC, 3 DESC, 1 DESC)

Saludos cordiales
Responder Con Cita
  #7  
Antiguo 08-06-2020
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 idea. Mañana mismo lo probaré.
Responder Con Cita
  #8  
Antiguo 09-06-2020
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 cloayza Ver Mensaje
Bueno, tendría que ser así mas o menos...
¡Perfecto! Es exactamente lo que me hacía falta. Ahora tengo que ver como lo encajo en el programa.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Utilizar un valor de un Select dentro de otro Select gluglu SQL 6 15-04-2011 14:22:36
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35
5 select de 5 tablas diferentes en un select solo sakuragi SQL 6 15-06-2005 18:57:06
Select anidado: Select from (select....) Malon SQL 2 14-10-2004 14:01:24
Select anidado ( Select from select ) Malon Firebird e Interbase 1 05-10-2004 04:14:38


La franja horaria es GMT +2. Ahora son las 23:06:26.


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