ho una tabella dove ogni elemento ha una categoria tra tre possibili e devo stampare una select che restituisca gli elementi divisi per categoria, ovvero

codice:
___________________
ID    |  categoria
___________________
1     |     a
      |
2     |     a
      |
3     |     b
      |
4     |     a
      |
5     |     b
      |
6     |     c
      |
7     |     c



select;
__________________
A   |   B    |  C
__________________
1   |   3    |  6
    |        |
2   |   5    |  7
    |        |
4   |  null  | null


ho provato con la ridenominazione con variabili sulla stessa tabella presa più volte ma non riesco a definire la clausola di selezione WHERE e a fare in modo che i risultati nelle singole colonne non siano ripetuti, DISTINCT lavora sulle righe quindi non funziona, il groupby invece mi collassa tutti i risultati restituendo una sola riga quindi è inadatto al caso, ho provato a usare il right JOIN ma non riesco a impostare la clausola WHERE per determinare il criterio di selezione degli elementi per ogni categoria, per ora con due variabili ho provato questa:

codice:
SELECT 1.ID as A, 2.ID as B

FROM Tabella as 1 RIGHT JOIN Tabella as 2

ON 1.Categoria='a' AND 2.Categoria='b';

ma ancora non và, come si può fare (se si può fare)?