tabla de referencias cruzadas con 2 (o más) nombres de fila

Estoy tratando de transponer una tabla que tiene 2 nombres de fila.
La documentación de Postgres menciona lacrosstab() La función es capaz de manejar solo el nombre de 1 fila, pero tengo 2 nombres de fila, como el nombre y el apellido.

mi tabla intital es:

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

y quiero que mi tabla final sea con 2 filas iniciales y el tipo de archivo transpuesto

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

No he podido encontrar lo que necesito en functools ...

la versión es postgres 9.3

Respuestas a la pregunta(2)

Su respuesta a la pregunta