I have 3 tables that I need to join, with the endresult being a pivot of certain columns.
The situation is as follows:
Table 1
| ID | COLUMN_A | COLUMN_B | COLUMN_C | COLUMN_G | NN_COLUMN_H | NN_COLUMN_I |
|---|---|---|---|---|---|---|
| 1 | 10 | 1 | Aa | 123aa | null | null |
| 1 | 20 | 2 | Aa | 56211 | blah | null |
| 1 | 30 | 3 | Aa | 123aa | vvvv | null |
| 2 | 40 | 4 | Bb | 678cf | null | null |
| 2 | 50 | 5 | Bb | 56211 | blah | mmmm |
Table 2
| ID | COLUMN_C | COLUMN_J | NN_COLUMN_K |
|---|---|---|---|
| Aa_G | Aa | AaA | null |
| Aa_G | Bb | AaA | null |
| Aa_G | Cc | AaA | 1234 |
| Aa_G | Dd | AaA | 5678 |
Table3
| ID | COLUMN_D | COLUMN_E | COLUMN_F | COLUMN_L | NN_COLUMN_M | NN_COLUMN_N |
|---|---|---|---|---|---|---|
| 1 | VALUE1 | 10 | 01-03-2024 | True | 12 | 0000a |
| 1 | VALUE1 | 11 | 02-03-2024 | True | 34 | 0000b |
| 1 | VALUE2 | 10 | 01-03-2024 | True | 56 | 0000b |
| 2 | VALUE1 | 15 | 01-03-2024 | True | 78 | 0000b |
| 2 | VALUE2 | 12 | 01-03-2024 | True | 89 | 0000s |
| 2 | VALUE2 | 12 | 02-03-2024 | True | 45 | 00001 |
Table 4, the endresult
| ID | VALUE1 | VALUE2 | COLUMN_F | COLUMN_C | COLUMN_G | COLUMN_J | COLUMN_L |
|---|---|---|---|---|---|---|---|
| 1 | 10 | 10 | 01-03-2024 | Aa | Aa_G | AaA | True |
| 1 | 11 | null | 02-03-2024 | Aa | Aa_G | AaA | True |
| 2 | 15 | 12 | 01-03-2024 | Bb | Aa_G | AaA | True |
| 2 | null | 12 | 02-03-2024 | Bb | Aa_G | AaA | True |
I have tried the following:
SELECT *
FROM
TABLE3
LEFT JOIN TABLE1
ON TABLE3.ID = TABLE1.ID
LEFT JOIN TABLE2
ON TABLE1.COLUMN_C = TABLE2.COLUMN_C
WHERE TABLE3.COLUMN_D in ('VALUE1', 'VALUE2')
However, I'm stuck as to where or how to implement the PIVOT line. The columns that should be pivoted are column_D and column_E in table3.
See example
Case when more than 1 (Id,VALUEx) per date
Join as
Fiddle