FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Pivote: Sigo sin entenderlo...
Lo siento. Por más vueltas que le doy no acabo de entender bien como hacer este tipo de querys. Creo que he visto todos los hilos en los que se trata este tema; estuve viendo el código que puso fjcg02 en Trasnformadas, crosstab, pivot, referencias cruzadas ...
(Un apunte: El código del ejemplo da un error -607 Malformed string al ejecutarlo con SQL Manager, y no he sido capaz de ver dónde está) A partir de esta tabla: quiero montar un query; los campos son INTEGER. En principìo había pensado en una salida parecida a esta: Para esta salida uso este query: Pero probablemente me sea más útil para lo que quiero otra en que los nombres de las columnas sean cada uno de los tipos (municipales, autonómicas, etc.) y en cada fila esté cada uno de lso resultados. Algo así: Código:
Orden Municipales Autonómicas Generales Europeas 1 40,0009 39,2431 38,5656 49,0767 2 45,9111 46,9671 43,5847 51,1198 3 37,0923 37,0738 23,5756 38,8671 4 35,5026 28,5302 21,4285 28,6433 Última edición por Angel.Matilla fecha: 28-01-2020 a las 19:33:10. |
#2
|
||||
|
||||
Sigues sin entender porque no haces caso. Te he dicho que pivote con JOINS no es la manera. Hay te puse un link a un tutorial, si lo miraste?.
Reitero: Sin ayuda del motor, hacer esto REQUIERE HACER PASOS "manuales". TIENES que usar CASE para "filtrar" los datos de columnas junto con GROUP BY. Te paso otro link que muestra los pasos: https://modern-sql.com/use-case/pivot (Ahi usan FILTER pero es lo mismo con CASE)
__________________
El malabarista. |
#3
|
||||
|
||||
Cita:
|
#4
|
||||
|
||||
Lo siento. No soy capaz de encontrar la solución. Ante todo gracias a mamcx por los enlaces que ha puesto; me han aclarado algunas cosas, pero el problema es que todos los ejemplos que vienen son con funciones que agrupan (SUM, COUNT, etc.) y por lo tanto hace falta GROUP BY pero yo necesito las filas individuales. Tengo que pasar de esta tabla:
a esta otra: entendiendo que la primera fila (3, 4, etc.) serían los nombres de las columnas. Me da lo mismo hacerlo con un pivote o como sugiere mamcx con CASE, pero no se me ocurre absolutamente ninguna forma. Lo más próximo que he logrado con: es esto: que evidentemente no es lo que busco. |
#5
|
|||
|
|||
Estimado Angel.Matilla, me intereso tu problema y creo que hay una opción, por supuesto no será la única ni la mejor, pero es un comienzo.
Esta solución consta de dos partes: 1) Procedimiento almacenado: Que genera un correlativo dentro de cada "PROCESO" Proceso Fila 3 1 3 2 3 3 3 4 4 1 4 2 4 3 ...
2) Consulta que utiliza el procedimiento almacenado y genera la vista de los datos según el formato requerido.
Espero te sirva, saludos cordiales Última edición por cloayza fecha: 29-01-2020 a las 16:27:56. |
#6
|
||||
|
||||
cloayza: ¡¡¡CHAPEAU!!! Es exactamente lo que me hace falta. Tendré que pulirlo porque la tabla de la que saco los datos se crea en tiempo de ejecución pero efectivamente es la saldia que me hacía falta. Te invito a unas
|
#7
|
||||
|
||||
Cita:
Cita:
Última edición por Angel.Matilla fecha: 29-01-2020 a las 20:38:05. |
#8
|
||||
|
||||
Cambia el nombre de esa variable, ponle por ejemplo vproceso, es que tienes un campo que se llama igual.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
||||
|
||||
Cita:
Es más, ejecutar la cosulta 3 veces seguidas podría dar resultados diferentes. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#10
|
||||
|
||||
Quiero decir que me parece más razonable que sea algo así
FECHA Europeas, Generales, 2015 100 200 2016 50 70 2018 200 175 ... por lo tanto te tiene que faltar algún campo. Y si es así, te falta el group by.
o
a ver si avanzas... Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#11
|
||||
|
||||
Con un campo fecha sale así, no sé si es lo que busca:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#12
|
||||
|
||||
Gracias. No es la primera vez que me dices lo mismo.
|
#13
|
||||
|
||||
Por partes. Antes que nada gracias a todos por la ayuda prestada y pediros disculpas por las molestias.
Cita:
el SQL da un error: Cita:
El campo fecha sería el más lógico pero el problema es que no todos los procesos tienen lugar en el mismo año; así en España en el año 2019 han habido dos elecciones generales. |
#14
|
||||
|
||||
No es problema, era solo un ejemplo, las fechas pueden ser del mismo año: 20190501, 20190623, 20190625, etc.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#15
|
|||
|
|||
Posible Solucion
NO SE SI ESTO TE SIRVA, PUEDE SER LENTO SI LA TABLA ORIGEN ES MUY GRANDE
SELECT (SELECT COUNT(*) FROM INMOV where INCODTRA = '1') ENTRADAS, (SELECT COUNT(*) FROM INMOV where INCODTRA = '2') REUBICACION, (SELECT COUNT(*) FROM INMOV where INCODTRA = '3') SALIDAS FROM RDB$DATABASE RDB$DATABASE <--- TIENE UN SOLO REGISTRO AHORA PUEDES HACER TAMBIEN WITH TABLA AS( SELECT (SELECT COUNT(*) FROM INMOV where INCODTRA = '1') ENTRADAS, (SELECT COUNT(*) FROM INMOV where INCODTRA = '2') REUBICACION, (SELECT COUNT(*) FROM INMOV where INCODTRA = '3') SALIDAS FROM RDB$DATABASE) SELECT * FROM TABLA |
#16
|
||||
|
||||
Cita:
No te doy el enlace a la guía de estilo porque ya sabes dónde está
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Query con pivote: No termino de entenderlo | Angel.Matilla | Firebird e Interbase | 16 | 17-01-2020 19:06:25 |
Query con pivote | Angel.Matilla | Firebird e Interbase | 2 | 02-01-2020 16:58:44 |
Con que sigo? | serfap | Varios | 6 | 12-06-2006 19:02:58 |
sigo con MDI | pablo | OOP | 2 | 27-02-2005 18:42:15 |
Sigo con mis preguntitas!!! | Critter | Varios | 1 | 15-12-2004 22:44:05 |
|