Para evitar cualquier confusión sobre cómo escapar de las comillas simples y, en general, simplificar la sintaxis, use cotización de dólares para la cadena de consulta:
SELECT *
FROM crosstab($$
SELECT person_id, item_name, item_value
FROM t1
WHERE person_id = 1
AND item_name IN ('NAME', 'GENDER')
$$) AS virtual_table (person_id int, name varchar, gender varchar)
Y debe agregar ORDER BY
a su cadena de consulta. Cito el manual del módulo tablefunc
:
Más detalles: