1

Temat: Dynamiczna zamiana wierszy na kolumny

Witam!

Mam dwie tabele:

data_type
-------------
dt_id int,
dt_name string

data_value
--------------
dv_id int
dv_user_id int
dv_value int
dv_type_id int   (Referencja do data_type.dt_id)

W tabelach mam dane:

dt_id | dt_name
--------------------
  1    | Data_Type_1
  2    | Data_Type_2

dv_id | dv_user_id | dv_value | dv_type_id
------------------------------------------------------
    1   |          1       |       6        |       1
    2   |          1       |       7        |       2
    3   |          2       |       8        |       1
    4   |          2       |       9        |       2

A w wyniku zapytania chciałbym uzyskać tabelę:

dv_user_id | Data_Type_1 | Data_Type_1
-----------------------------------------------------
        1         |            6         |         7
        2         |            8         |         9


Dodatkowym utrudnieniem jest to, że wszystkie dane zmieniają się dynamicznie, także nie mogę napisać stałego zapytania.
Najlepiej gdyby udało się wyświetlać docelową tabelę w postaci widoku.

Jak ktoś ma jakiś pomysł to proszę o podzielenie się nim, gdyż ja dostałem totalnego zaciemnienia hmm

2

Odp: Dynamiczna zamiana wierszy na kolumny

Select * From crosstab('Select dv_user_id, dt_name, dv_value From data_value Join data_type On (dt_id = dv_type_id)') As ct(dv_user_id int, "Date_Type_1" int, "Data_Type_2" int);
 dv_user_id | Date_Type_1 | Data_Type_2 
------------+-------------+-------------
          1 |           6 |           7
          2 |           8 |           9
(2 rows)