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 |
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) |
Cita:
|
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. |
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 |
Cita:
|
Cita:
Cita:
|
Cambia el nombre de esa variable, ponle por ejemplo vproceso, es que tienes un campo que se llama igual.
|
Cita:
Es más, ejecutar la cosulta 3 veces seguidas podría dar resultados diferentes. Saludos |
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 |
Con un campo fecha sale así, no sé si es lo que busca:
|
Cita:
|
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:
Cita:
|
Cita:
|
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 |
Cita:
No te doy el enlace a la guía de estilo porque ya sabes dónde está :p |
La franja horaria es GMT +2. Ahora son las 12:13:37. |
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