Wenn Du dynamisch
SQL Statements erzeugst, hast Du doch die freie Wahl beim Feldnamen. Das bedeutet in Deinem Fall natürlich, dass innerhalb der Generierung des Statements die Werte für die Feldnamen abgefragt werden müssen.
Tatsächlich kannst Du in eingen RDBMS mit Pivotqueries arbeiten, die sind bezüglich der darzustellenden Pivotspalten aber auch nicht unbedingt dynamisch, sondern benötigen meist eine Angabe der Pivotspalten. In Firebird gibt es aber soweit ich weiß keine Pivotqueries.
Vielleicht benötigst Du einfach eine dynamische Feldnamenverwaltung, die Du zur Darstellung Deiner Abfrageergebnisse einsetzt? Also ein Mapping von Abfragen und deren originärer Feldnamen auf die gewünschten Displaywerte?