Yo hago algo parecido y me toca que construirlo desde delphi, yo hago algo así como esto:
Código Delphi
[-]
sql := '';
while not QConceptos.Eof do
begin
if sql <> '' then
sql := sql + ',';
Concepto := QConceptos.FieldByName('Concepto').AsString;
sql := sql + ' Case when Campo = ' + QuotedStr(Concepto) + ' THEN campoimporte else 0 end as ' + Concepto
QConceptos.Next;
end;
sql := 'Select Id_empleado, ' + sql + ' from ....'
Donde el query QConceptos es el siguiente:
Código SQL
[-]
Select distinct Concepto from Conceptos
Todo esto lo hago sin comprobar, es solo para dar una idea de como lo hago.