Ver Mensaje Individual
  #5  
Antiguo 29-01-2020
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Reputación: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
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
...

Código SQL [-]
create procedure SP_PROCESO_FILAS
  returns (
    proceso integer,
    fila integer,
    codigo integer,
    votos2 integer,
    total integer)
as
declare variable OldProc integer;
begin
  
  OldProc=-1;
  fila=0;
  for select proceso, codigo, votos2, total
      from votos
      into : proceso,
           :codigo,
           :votos2,
           :total
  do
  begin
        if (OldProc<>proceso) then
        begin
            fila=0;
            OldProc=proceso;
        end

        fila=fila+1;
        suspend;
  end
end

2) Consulta que utiliza el procedimiento almacenado y genera la vista de los datos según el formato requerido.
Código SQL [-]
/*
Esta consulta genera los procesos en forma de columnas
utiliza sp_procesos_filas
*/
select a.fila,
       sum(iif(A.Proceso = 3, A.Votos2,0)) Europeas,
       sum(iif(A.Proceso = 4, A.Votos2,0)) Generales,
       sum(iif(A.Proceso = 5, A.Votos2,0)) Autonomicas,
       sum(iif(A.Proceso = 6, A.Votos2,0)) Municipales
from SP_PROCESO_FILAS a
group by a.fila


Espero te sirva, saludos cordiales

Última edición por cloayza fecha: 29-01-2020 a las 15:27:56.
Responder Con Cita