Ver Mensaje Individual
  #9  
Antiguo 27-09-2005
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
Ayer respondí en otra entrada, pero no estaba muy certero porque era tarde. Echale un vistazo a este tema, que está un poco más currado.

Query Columnas: SELECT distinct Ruta FROM TABLA ORDER BY Ruta
Ruta
A
B
C
...


Query Consulta: Es la que vamos a montar dinámicamente

Consulta.SQL.Clear;
Consulta.SQL.Add( 'SELECT Oficina ');
Columnas.Open;
while not Columnas.eof
begin
Consulta.SQL.Add( ', SUM(CASE Ruta WHEN '+Quotedstr(Columnas.Fields[0].AsString)+' THEN '+Ingreso+' ELSE 0 END) AS'+ Quotedstr(Columnas.Fields[0].AsString)';
Columnas.next;
end
Consulta.SQL.Add( ' FROM TABLA GROUP BY Oficina');

Consulta.Open

// Consulta antes de hacer el OPEN tendrá algo parecido a esto
SELECT Oficina
, SUM(CASE Ruta WHEN 'A'THEN '+Ingreso+' ELSE 0 END) AS A

, SUM(CASE Ruta WHEN 'B'THEN '+Ingreso+' ELSE 0 END) AS B

...

FROM TABLA GROUP BY Oficina

Cuando crees una nueva ruta, saldrá en la query de Columnas
oficina A B C D E
1 100 70 200
2 200 150 250
3 100 200

espero que te sirva de ayuda.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita