Per evitare qualsiasi confusione su come evitare le virgolette singole e in generale semplificare la sintassi, utilizzare quotazione del dollaro per la stringa di query:
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)
E dovresti aggiungere ORDER BY
alla tua stringa di query. Cito il manuale per il modulo tablefunc
:
Maggiori dettagli: