tabela de referência cruzada com 2 (ou mais) nomes de linha

Estou tentando transpor uma tabela que tem 2 nomes de linha.
A documentação do Postgres menciona ocrosstab() função capaz de lidar apenas com 1 nome de linha, mas eu tenho 2 nomes de linha, como nome e sobrenome.

minha mesa inicial é:

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

e eu quero que minha mesa final fique com 2 linhas iniciais e o file_type transposto

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

Não consegui encontrar o que preciso nas funções ...

versão é o Postgres 9.3

questionAnswers(2)

yourAnswerToTheQuestion