Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-01-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 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
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Query con pivote: No termino de entenderlo Angel.Matilla Firebird e Interbase 16 17-01-2020 18:06:25
Query con pivote Angel.Matilla Firebird e Interbase 2 02-01-2020 15:58:44
Con que sigo? serfap Varios 6 12-06-2006 18:02:58
sigo con MDI pablo OOP 2 27-02-2005 17:42:15
Sigo con mis preguntitas!!! Critter Varios 1 15-12-2004 21:44:05


La franja horaria es GMT +2. Ahora son las 23:56:43.


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
Copyright 1996-2007 Club Delphi