No sabria decirte si estas haciendo algo mal, me da que el '%' no esta funcionando; Prueba tambien de no llamar por el alias en el HAVING, pon la expresion completa.
si no, una alternativa es que , a tu recordset le asignes el codigo sql en runTime, le pasas o no la clausula where, ... , como es esto?
Ejemplo:
Código:
My_Query.sql.Add:= 'SELECT .....' ;
My_Query.sql.Add:= ' FROM .....' ;
if(agrego_Condicion_al_SQL) then My_Query.sql.Add:= ' WHERE ....';
if(agrego_Orden_al_SQL) then My_Query.sql.Add:= ' GROUP BY ...' ;
if(agrego_Cond_Extra_al_SQL) then My_Query.sql.Add:= ' HAVING ....';
My_Query.sql.Add:= ';' ;