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 15-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
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,8322
AUTONÓMICAS... etc.
Sé que tiene que ser con el método de pivote, pero ninguna de las pruebas que he hecho me sale bien. Con este query:
Código SQL [-]
WITH Pivote AS (SELECT Proceso, Codigo, CAST(100 * VOTOS2 AS NUMERIC(6, 2)) / CAST(TOTAL AS NUMERIC(6, 2)) Porc FROM SYSDBA134147)
SELECT DISTINCT A.Nombre, C.Porc PorcC, D.Porc PorcD, E.Porc PorcE, F.Porc PorcF
FROM Proceso A, SYSDBA134147 B
LEFT JOIN Pivote C ON B.Codigo = C.Codigo
LEFT JOIN Pivote D ON B.Codigo = D.Codigo
LEFT JOIN Pivote E ON B.Codigo = E.Codigo
LEFT JOIN Pivote F ON B.Codigo = F.Codigo
WHERE A.Codigo = (SELECT Codigo FROM Proceso WHERE Nombre = 'MUNICIPALES') AND A.Codigo = B.Proceso
lo que he obtenido es esto:

Es evidente que me falta alguna condición pero no soy capaz de ver cual es.
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 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


La franja horaria es GMT +2. Ahora son las 08:38:16.


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