tabela krzyżowa z 2 (lub więcej) nazwami wierszy

Próbuję przetransponować tabelę, która ma 2 nazwy wierszy.
Dokumentacja Postgres wspomina ocrosstab() funkcja może obsługiwać tylko 1 nazwę wiersza, ale mam 2 nazwy wierszy, takie jak imię i nazwisko.

mój wstępny stół to:

fn |  ln |  file_type |attribute
--------------------------------
A  |  1  |  cat1     |abc
A  |  2  |  cat1     |gth
A  |  1  |  cat2     |fgh
B  |  1  |  cat2     |gth

i chcę, aby moja ostatnia tabela była z 2 początkowymi wierszami i transponowano typ pliku

 fn |  ln |  cat1 | cat2
--------------------------------
 A  |   1 |  abc  | fgh
 A  |   2 |  gth  | 
 B  |   1 |       | gth

Nie byłem w stanie znaleźć tego, czego potrzebuję w functools ...

wersja to Postgres 9.3

questionAnswers(2)

yourAnswerToTheQuestion