Postgres 9.2.1 on OSX 10.9.2.
If I run the following crosstab example query:
CREATE EXTENSION tablefunc;
CREATE TABLE ct(id SERIAL, rowid TEXT, attribu
There's a misconception in your answer:
and not accessible to all schemas in it.
All schemas inside the same database are accessible to all sessions in that same database, (as long as privileges are given). It's a matter of setting the search_path. Schemas work much like directories / folders in the file system.
Alternatively, you can schema-qualify the function (and even operators) to access it independently of the search_path
:
SELECT *
FROM my_extension_schema.crosstab(
$$select rowid, attribute, "value"
from ct
where attribute IN ('att2', 'att3')
order by 1,2$$
,$$VALUES ('att2'), ('att3')$$
) AS ct(row_name text, category_2 text, category_3 text);
Recent related answer with more Info:
How to use % operator from the extension pg_trgm?
crosstab()
Your query returned attributes 'att2'
and 'att3'
, but the column definition list had three categories (category_1, category_2, category_3
) that do not match the query.
I removed category_1
and added the second parameter to crosstab() - the "safe" version. More details here:
PostgreSQL Crosstab Query
Aside: Don't use value
as column name. Even if Postgres tolerates it. It's a reserved word in standard SQL.