Ver Mensaje Individual
  #1  
Antiguo 02-01-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
Query con pivote

Tengo una BB.DD. en Firebird 2.5 y necesito montar un query con un pivote pero me está dando resultados qe no acabo de entender. A ver si soy capaz de explicarlo.

El query usa estas tablas:
1. Elecciones
Codigo Proceso Fecha
1 6 1979
2 4 1982
3 5 1983... etc.

2. Proceso
Codigo Nombre
3 EUROPEAS
4 GENERALES
5 AUTONOMICAS
6 MUNICIPALES

3. Resultados
Proceso Mesa Partido Votos
29 139 3 131
29 139 14 43
29 139 2 144... etc.

4. Mesas
Codigo Municpio Distrito Seccion Mesa
1 175 1 1 U
2 175 1 2 U... etc.

5. Partidos
Codigo Nombre Sigla
2 PARTIDO POPULAR PP
3 PARTIDO SOCIALISTA PSOE... etc.

Y el query (se crea de forma dinámica en función de la selección del usuario) lo tengo montado así:
Código SQL [-]
WITH Pivote AS (SELECT * FROM Resultados)
SELECT A.Codigo, A.Fecha, B.Nombre, CS.Partido, PP.Partido, SUM(CS.Votos) VotosCS, SUM(PP.Votos) VotosPP
  FROM Elecciones A, Proceso B, Resultados C
INNER JOIN Pivote CS ON A.CodPrv = CS.CodPrv AND A.Codigo = CS.Proceso AND CS.Partido = 22 AND C.Partido = CS.Partido AND C.Mesa = CS.Mesa
INNER JOIN Pivote PP ON A.CodPrv = PP.CodPrv AND A.Codigo = PP.Proceso AND PP.Partido =  2 AND C.Partido = PP.Partido AND C.Mesa = PP.Mesa
 WHERE A.Codigo IN (39, 32, 28, 24, 42, 37, 36, 35, 38, 34, 30, 26, 40, 33, 29, 25)
   AND A.Proceso = B.Codigo
   AND A.Codigo = C.Proceso AND C.Mesa IN (SELECT Codigo FROM Mesas WHERE Municipio = 1217)
 GROUP BY A.Codigo, A.Fecha, B.Nombre, CS.Partido, PP.Partido
 ORDER BY Nombre, Fecha
EL problema me viene porque si pongo sólo un INNER JOIN sí me da resultados; por ejemplo dejando el primer INNER JOIN:

Pero en el momento que añado más JOIN no me genera ningún resultado. He probado con LEFT en vez de INNER y si saca todas las filas que me interesan y muchas que no:

Por más vueltas que he dado no se me ocurre como hacerlo.
Responder Con Cita