FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Query con pivote: No termino de entenderlo
Por más vueltas que le estoy dando no acabo de comprender bien como funciona. Vamos a ver si soy capaz de explicarme.
Tengo dos tablas: Proceso CODIGO INTEGER NOMBRE VARCHAR(30) SYSDBA134147 PROCESO INTEGER, CODIGO INTEGER, FECHA SMALLINT, VOTOS2 INTEGER DEFAULT 0, VOTOS3 INTEGER DEFAULT 0, VOTOS16 INTEGER DEFAULT 0, VOTOS17 INTEGER DEFAULT 0, VOTOS22 INTEGER DEFAULT 0, VOTOS_3 INTEGER DEFAULT 0, VOTOS_1 INTEGER DEFAULT 0, VOTOS_2 INTEGER DEFAULT 0, TOTAL INTEGER DEFAULT 0, CENSO INTEGER DEFAULT 0 Esta última se crea sobre la marcha cada vez que se accede a la opción de la aplicación. El campo Proceso de ésta última es el campo Código de la primera. Con un query obtengo esta salida: Y lo que necesito es una salida en la que aparezcan en un misma línea los resultados de cada tipo: MUNICIPALES 32,6317 37,5252 32,1975 19,8322Sé que tiene que ser con el método de pivote, pero ninguna de las pruebas que he hecho me sale bien. Con este query: lo que he obtenido es esto: Es evidente que me falta alguna condición pero no soy capaz de ver cual es. |
#2
|
||||
|
||||
Mira este enlace, a ver si te sirve.
|
#3
|
||||
|
||||
Como te habia mencionado antes, hacer pivot en sql (si usa un motor sin cláusula pivot) NO SE PUEDE HACER DE FORMA DIRECTA. No hay manera de hacerlo con joins ni nada parecido.
Toca, semi-manualmente, transponer filas a columnas, que se hace con cláusulas CASE. Mira los pasos: https://mode.com/sql-tutorial/sql-pivot-table/
__________________
El malabarista. |
#4
|
||||
|
||||
Gracias por vuestras respuestas. Estuve dando vueltas a vuestras sugerencias hasta que recordé que en otro punto del proyecto estoy usando este método y casi, casi lo logro. He dejado el query así:
Evidentemente estoy probando y faltan líneas en ese query. De todas formas, esta es la salida que obtengo: Sólo me falta que todas las celdas de cada tipo estén en una sola línea. |
#5
|
||||
|
||||
Recalco:
P.D: Esta es una limitación de la imperfecta implementación del sql del modelo relacional, pero no hay como arreglarla sin los pasos manuales requeridos...
__________________
El malabarista. |
#6
|
||||
|
||||
prueba con esto:
A ver si te sale... Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#7
|
||||
|
||||
JOIN no es la solucion. los join crecen las filas, que es lo que menos se quiere aqui. Necesitan son aggregates (SUMs, GROUP By, ...).
__________________
El malabarista. |
#8
|
||||
|
||||
Cita:
Efectivamente, necesito reducir el número de líneas. |
|
|
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 |
|