piątek, 21 stycznia 2011

Zamiana wierszy na kolumny w tabeli - crosstab (postgresql).

Jakiś czas temu musiałem, zrobić dość nieprzyjemną operacje na tabeli, tzn. zamienić wiersze tak aby tworzyły one kolumny. Czyli coś takiego:
 x f01 a

 x f02 b

 x f03 c
 y f01 a
 y f02 b

 z f01 a

 z f02 b
 z f03 c

 z f04 d
 z f05 e

miało zamienić się w coś takiego:

 id f01 f02 f03 f04 f05
 x a b c
 y a b
 z a b c d e

Generalnie rzecz niby prosta, ale dość nienaturalna dla tabel w bazce . W realnym przykładzie miałem tak de facto 20 kolumn, co wiązało by się z wykonaniem 20 JOIN-ów, na tabelach, które posiadać będą olbrzymią ilość danych.

W postgresie na szczęście znalazłem funkcję: crosstab, która umożliwia szybkie (?) wykonanie zapytania krzyżowego (typu PIVOT) i pięknie realizuje to, o co mi chodzi.

Zastanawiam się tylko jak jest ona zaimplementowana, i jaka jest jej wydajność, czy poradzi sobie z zakładaną dość dużą ilością danych? Ktoś coś wie na ten temat?

Brak komentarzy:

Publikowanie komentarza