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 -
|