![]() |
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í: 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. |
Además me he dado cuenta que con LEFT JOIN no me saca un línea por cada proceso, que es lo que estoy buscando, y saca un línea por partido:
![]() |
La razon basica es que los JOINS filtran FILAS. Los pivot en cambian trabajan de forma columnar y con agregaciones.
Hay unas mejoras en el SQL mas moderno que no veo en firebird que lo hacen un poco mas complicado, pero en fin la idea es: 1- Genera todas las filas requeridas LUEGO 2- Usa agregados y/o pivotea los datos Dependiendo de la complejidad de esos agregados puede resultar mas simple crear una tabla temporal y hacer insert/updates. Tambien da resultado partir la consulta en secciones. Primero haces los joins que cojen un conjunto de datos y luego los mezclas. Asi es MAS sencillo ver en que momento la consulta se "tuerce" y enfocarse en resolver eso. P.D: Si la cosa no te da, podrias crear un script con una seccion limitada de datos pa checar... |
La franja horaria es GMT +2. Ahora son las 05:09:26. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi