Hola no se si entendí, bien, pero viendo este texto:
Cita: haber intentare ser mas clara en mi pregunta... la consulta debe mostrame los datos por la condicion ab.administrador o ab.fase o ab.cod_sitio, por una de las tres no por las tres que es lo que hace el xor, or, y and, con el fin de que en mi ultimo and campo_filtro =' ' ... si yo coloco zona es del ab.administrador, si escribo fase pertence al ab.fase y si coloco sitio correponde al ab.cod_sitio
y solo para condicionar un parámetro en el where lo puedes hacer así.
SELECT filtros.valor_filtro, AB. *
FROM filtros, AB
WHERE
CASE campo_filtro
WHEN 'zona' THEN ab.administrador
WHEN 'fase' THEN ab.fase
WHEN 'sitio' THEN ab.cod_sitio
end = filtros.valor_filtro
AND idPersona = '1'
AND nom_filtro = 'filtro'
AND campo_filtro = 'fase'
El CAse al menos funciona en sql server y oracle, no se en otros motores :P
saludos