I have a table where I store data of some parameters which are read step-wise. The number of parameters to be read can vary from use-case to use-case. The dataset of one step can be identified by its step number, the use-case by a uuid (dataset_uuid). The parameter_names "NAMExy" are not known at design time and need to be determined dynamically.
| dataset_uuid | other_uuid | type | parameter_name | timestamp (varchar) | step | value |
|---|---|---|---|---|---|---|
| uuid1 | uuid_a | TYPE1 | NAME1 | 2024-09-05T15:04:22.000 | 0 | 1147.0 |
| uuid1 | uuid_b | TYPE2 | NAME2 | 2024-09-05T15:04:22.000 | 0 | 17.569149 |
| uuid1 | uuid_c | TYPE2 | NAME3 | 2024-09-05T15:04:22.000 | 0 | 14.86613 |
| uuid1 | uuid_a | TYPE1 | NAME1 | 2024-09-05T15:04:24.000 | 1 | 1147.0 |
| uuid1 | uuid_b | TYPE2 | NAME2 | 2024-09-05T15:04:24.000 | 1 | 17.569149 |
| uuid1 | uuid_c | TYPE2 | NAME3 | 2024-09-05T15:04:24.000 | 1 | 14.896163 |
| uuid1 | uuid_a | TYPE1 | NAME1 | 2024-09-05T15:04:25.000 | 2 | 1148.0 |
| uuid1 | uuid_b | TYPE2 | NAME2 | 2024-09-05T15:04:25.000 | 2 | 17.569149 |
| ... | ||||||
| uuid2 | uuid_k | TYPE1 | NAME3 | ... | 0 | 1147.0 |
| uuid2 | uuid_l | TYPE2 | NAME4 | ... | 0 | 1147.0 |
| uuid2 | uuid_m | TYPE2 | NAME5 | ... | 0 | 1147.0 |
| uuid2 | uuid_n | TYPE2 | NAME6 | ... | 0 | 1147.0 |
| uuid2 | uuid_o | TYPE2 | NAME7 | ... | 0 | 1147.0 |
| uuid2 | uuid_k | TYPE1 | NAME3 | ... | 1 | 1147.0 |
| uuid2 | uuid_l | TYPE2 | NAME4 | ... | 1 | 1147.0 |
| uuid2 | uuid_m | TYPE2 | NAME5 | ... | 1 | 1147.0 |
| uuid2 | uuid_n | TYPE2 | NAME6 | ... | 1 | 1147.0 |
| uuid2 | uuid_o | TYPE2 | NAME7 | ... | 1 | 1147.0 |
I would like to have an SQL-statement or function which transforms the data into something like this - rows contain parameter values and time stamps:
| dataset_uuid | step | NAME1 | NAME2 | NAME3 | NAME4 | NAME5 | NAME6 | NAME7 | timestamp |
|---|---|---|---|---|---|---|---|---|---|
| uuid1 | 0 | 1147.0 | 17.569149 | 14.86613 | NULL | NULL | NULL | NULL | 2024-09-05T15:04:22.000 |
| uuid1 | 1 | 1147.0 | 17.569149 | 14.896163 | NULL | NULL | NULL | NULL | 2024-09-05T15:04:24.000 |
| uuid1 | 2 | 1147.0 | 17.569149 | ... | NULL | NULL | NULL | NULL | 2024-09-05T15:04:25.000 |
| ... | |||||||||
| uuid2 | 0 | NULL | NULL | NULL | val | val | val | val | timestamp |
| uuid2 | 1 | NULL | NULL | NULL | val | val | val | val | timestamp |
| uuid2 | 2 | NULL | NULL | NULL | val | val | val | val | timestamp |
| ... |
How can I achieve that in Postgresql ond Oracle?