I have two tables
TABLE_A:
| ID | NAME | DESCRIPTION |
|---|---|---|
| 1 | Main First | Firstly Original |
| 2 | Main Second | Secondly Original |
| 3 | Main Third | Thirdly Original |
RESOURCES:
| LANG_ID | CONTEXT_ID | CONTEXT | KEY | VALUE |
|---|---|---|---|---|
| 1 | 1 | TABLE_A | NAME | Frst Lang 1 |
| 2 | 1 | TABLE_A | NAME | Frst Lang 2 |
| 2 | 2 | TABLE_A | DESCRIPTION | Scnd Lang 2 |
My expected results:
| ID | NAME | DESCRIPTION | LANG_ID |
|---|---|---|---|
| 1 | Frst Lang 1 | Firstly Original | 1 |
| 2 | Frst Lang 2 | Scnd Lang 2 | 2 |
| 3 | Main Third | Thirdly Original | NULL |
What I have tried so far is:
SELECT REF.ID,
CASE WHEN RES.KEY = 'NAME' THEN RES.VALUE ELSE REF.NAME END AS NAME,
CASE WHEN RES.KEY = 'DESCRIPTION' THEN RES.VALUE ELSE REF.DESCRIPTION END AS DESCRIPTION,
RES.LANG_ID
FROM (
SELECT * FROM TABLE_A
) REF
LEFT JOIN (
SELECT * FROM RESOURCES
WHERE CONTEXT = 'TABLE_A'
) RES
ON REF.ID = RES.CONTEXT_ID
But it didn't produce the expected result. How can I succeed this by SQL?