Ver Mensaje Individual
  #1  
Antiguo 28-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
Unhappy 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:
Código SQL [-]
WITH Pivote AS (SELECT Codigo, Votos2, Total FROM SYSDBA122540 WHERE Total > 0) 
SELECT A.Nombre, 
       CAST(100 * MAX(C.VOTOS2) AS DECIMAL(10 ,2))/CAST(MAX(C.Total) AS DECIMAL(10 ,2)) PorcC, 
       CAST(100 * MAX(D.VOTOS2) AS DECIMAL(10 ,2))/CAST(MAX(D.Total) AS DECIMAL(10 ,2)) PorcD, 
       CAST(100 * MAX(E.VOTOS2) AS DECIMAL(10 ,2))/CAST(MAX(E.Total) AS DECIMAL(10 ,2)) PorcE, 
       CAST(100 * MAX(F.VOTOS2) AS DECIMAL(10 ,2))/CAST(MAX(F.Total) AS DECIMAL(10 ,2)) PorcF 
  FROM Proceso A, SYSDBA122540 B 
  LEFT JOIN Pivote C ON B.Codigo = C.Codigo AND C.Codigo IN (25, 26, 35, 24) 
  LEFT JOIN Pivote D ON B.Codigo = D.Codigo AND D.Codigo IN (29, 30, 36, 28) 
  LEFT JOIN Pivote E ON B.Codigo = E.Codigo AND E.Codigo IN (33, 34, 37, 32) 
  LEFT JOIN Pivote F ON B.Codigo = F.Codigo AND F.Codigo IN (40, 38, 42, 39) 
 WHERE A.Codigo = B.Proceso GROUP BY A.Nombre ORDER BY Nombre
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
y por más vueltas que doy no sé como montarlo para que me genere esta última salida. De verdad que no acabo de entender cómo montar estos querys.

Última edición por Angel.Matilla fecha: 28-01-2020 a las 18:33:10.
Responder Con Cita