PostgreSQL 9.3: Tabela dinâmica dinâmica

Eu tenho uma tabela chamada como matriz que contém duas colunas ou sejacola ecolb como mostrado abaixo:

Mesa: matriz

create table matrix
(
cola varchar(10),
colb varchar(10)
);

Inserção de linhas:

insert into matrix values('A1','B1'),('A2','B2'),('A3','B3'),('A4','B4'),
             ('A5','B5'),('A6','B6'),('A7','B7'),('A8','B8'),
             ('A9','B9'),('A10','B10'),('A11','B11'),('A12','B12'),
             ('A13','B13'),('A14','B14'),('A15','B15'),('A16','B16'),
             ('A17','B17'),('A18','B18'),('A19','B19'),('A20','B20'),
             ('A21','B21'),('A22','B22'),('A23','B23'),('A24','B24'),
             ('A25','B25'),('A26','B26'),('A27','B27'),('A28','B28'),
             ('A29','B29'),('A30','B30');

Nota: Quero mostrar o resultado na forma de matriz e contar quais colunas pertencem umas às outras e atribuir os valores na matriz para cada coluna. Acabei de adicionar 30 registros por exemplo, mas também pode haver milhares de registros. Então, preciso preparar uma tabela dinâmica dinâmica para isso. O resultado esperado, como mostrado abaixo.

resultado esperado:

      A1        A2      A3      A4      A5      A6 ................ A30
      ------------------------------------------------------------------
B1 |  1         0       0       0       0       0                    0  
   |    
B2 |  0         1       0       0       0       0                    0
   |
B3 |  0         0       1       0       0       0                    0 
   |
B4 |  0         0       0       1       0       0                    0
   | 
B5 |  0         0       0       0       1       0                    0 
   | 
B6 |  0         0       0       0       0       1                    0
.  |
.  |
.  |
.  |
B30|  0         0       0       0       0        0                   1 

questionAnswers(1)

yourAnswerToTheQuestion