Este é um pedido comum. É chamado de consulta dinâmica ou de tabela cruzada. O PostgreSQL não possui nenhuma sintaxe interna legal para ele, mas você pode usar a
crosstab função do tablefunc módulo para fazer o que você quer
. Para mais informações, pesquise Stack Overflow por
[postgresql] [pivot] ou [postgresql] [crosstab] . Alguns sistemas de banco de dados relacionais oferecem uma boa maneira de fazer isso com uma consulta embutida, mas o PostgreSQL ainda não oferece.