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 17-01-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 respuesta. He estado probando pero o no he montado bien el query o no sale lo que me hace falta. He dejado así el query:
Código SQL [-]
SELECT Datos.Nombre,
       CASE WHEN Datos.Codigo IN (39, 32, 28, 24) THEN Votos2 ELSE 0 END Columna1,
       CASE WHEN Datos.Codigo IN (42, 37, 36, 35) THEN Votos2 ELSE 0 END Columna2,
       CASE WHEN Datos.Codigo IN (38, 34, 30, 26) THEN Votos2 ELSE 0 END Columna3,
       CASE WHEN Datos.Codigo IN (40, 33, 29, 25) THEN Votos2 ELSE 0 END Columna4
  FROM (SELECT A.Nombre, B.Codigo, B.Votos2
          FROM SYSDBA194521 B
          LEFT JOIN Proceso A ON A.Codigo = B.Proceso) Datos
Lo que necesito son los datos de cada uno de los casos y por ello no me hace falta el SUM; es irrelevante. Pero al ejecutar este query las salida es esta:

Así no me vale porque el resultado del query lo necesito para definir un TQRChart. Me hace falta que los resultados de cada tipo queden en una misma fila.

No obstante es una idea interesante que no se me había ocurrido.

Última edición por Angel.Matilla fecha: 17-01-2020 a las 10:35:59.
Responder Con Cita
  #2  
Antiguo 17-01-2020
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
¿Puedes poner la estructura de las tablas SOLAMENTE con los campos que necesitas y algunos datos para que podamos probar?
No pongas los campos que no son necesarios para que no nos confundamos.
Responder Con Cita
  #3  
Antiguo 17-01-2020
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
inténtalo con esta consulta:


Código SQL [-]
  SELECT 
      A.Nombre, 
      sum(Columna1) as columna1, 
      sum(Columna2) as columna2, 
      sum(Columna3) as columna3, 
      sum(Columna4) as columna4
  FROM (SELECT 
            Proceso, 
            CASE WHEN Codigo IN (39, 32, 28, 24) THEN Votos2 ELSE 0 END Columna1,
            CASE WHEN Codigo IN (42, 37, 36, 35) THEN Votos2 ELSE 0 END Columna2,
            CASE WHEN Codigo IN (38, 34, 30, 26) THEN Votos2 ELSE 0 END Columna3,
            CASE WHEN Codigo IN (40, 33, 29, 25) THEN Votos2 ELSE 0 END Columna4
        FROM SYSDBA194521 
        group by Proceso, Codigo) B  
    LEFT JOIN Proceso A ON A.Codigo = B.Proceso
  group by Proceso;
Responder Con Cita
  #4  
Antiguo 17-01-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
Tabla Proceso


Tabla SYSDBA194521


El campo CODIGO de la tabla Proceso coincide con el campo PROCESO de la tabla SYSDBA194521.
Responder Con Cita
  #5  
Antiguo 17-01-2020
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
conforme a los datos que has publicado, y suponiendo que el primer dato de cada proceso va a la columna1, el segundo dato a la 2, y así sucesivamente, entonces la consulta debería de quedar de esta forma:

Código SQL [-]
  SELECT 
      A.Nombre, 
      sum(Columna1) as columna1, 
      sum(Columna2) as columna2, 
      sum(Columna3) as columna3, 
      sum(Columna4) as columna4
  FROM (SELECT Proceso,
       CASE WHEN Codigo IN (24, 35, 26, 25) THEN Votos2 ELSE 0 END as Columna1,
       CASE WHEN Codigo IN (28, 36, 30, 29) THEN Votos2 ELSE 0 END as Columna2,
       CASE WHEN Codigo IN (32, 37, 34, 33) THEN Votos2 ELSE 0 END as Columna3,
       CASE WHEN Codigo IN (39, 42, 38, 40) THEN Votos2 ELSE 0 END as columna4
  FROM SYSDBA194521
GROUP BY Proceso, Codigo) B  
    LEFT JOIN Proceso A ON A.Codigo = B.Proceso
  group by Proceso;

La consulta en si, es la misma que he puesto anteriormente, solo cambian el valor del campo código para obtener el orden correcto.

Última edición por bucanero fecha: 17-01-2020 a las 13:14:50. Razón: modificación en el SQL para el orden correcto de los campos
Responder Con Cita
  #6  
Antiguo 17-01-2020
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Cita:
Empezado por Angel.Matilla Ver Mensaje
Gracias por la respuesta. He estado probando pero o no he montado bien el query o no sale lo que me hace falta. He dejado así el query:
Código SQL [-]
SELECT Datos.Nombre,
       CASE WHEN Datos.Codigo IN (39, 32, 28, 24) THEN Votos2 ELSE 0 END Columna1,
       CASE WHEN Datos.Codigo IN (42, 37, 36, 35) THEN Votos2 ELSE 0 END Columna2,
       CASE WHEN Datos.Codigo IN (38, 34, 30, 26) THEN Votos2 ELSE 0 END Columna3,
       CASE WHEN Datos.Codigo IN (40, 33, 29, 25) THEN Votos2 ELSE 0 END Columna4
  FROM (SELECT A.Nombre, B.Codigo, B.Votos2
          FROM SYSDBA194521 B
          LEFT JOIN Proceso A ON A.Codigo = B.Proceso) Datos
Lo que necesito son los datos de cada uno de los casos y por ello no me hace falta el SUM; es irrelevante. Pero al ejecutar este query las salida es esta:

Así no me vale porque el resultado del query lo necesito para definir un TQRChart. Me hace falta que los resultados de cada tipo queden en una misma fila.

No obstante es una idea interesante que no se me había ocurrido.
Porque te falta el GROUP BY !!
todo lo que no vaya con función de garegado ( max, min, sum, avg, ..) debe ir en el group by.

Y utiliza lo que necesites, he puesto SUM como cualquier otra cosa. Y poniedo el group by necesitas SUM().

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #7  
Antiguo 17-01-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 bucanero Ver Mensaje
conforme a los datos que has publicado, y suponiendo que el primer dato de cada proceso va a la columna1, el segundo dato a la 2, y así sucesivamente, entonces la consulta debería de quedar de esta forma:
Vale. Este sí funciona. Muchas gracias a todos por la ayuda.
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
Query con pivote Angel.Matilla Firebird e Interbase 2 02-01-2020 15:58:44
Termino Involucion ¿? amerika111 Varios 14 12-04-2012 01:08:43
SearchRec sale antes del termino Paulao Varios 3 19-07-2011 14:04:36
Detectar término sessión lucasarts_18 HTML, Javascript y otros 13 14-04-2008 17:43:05
Terminó de cargar la página? Novás Varios 2 08-07-2006 16:24:35


La franja horaria es GMT +2. Ahora son las 14:54: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