Förutsatt att din underfråga redan får tillbaka rätt värde, och du bara frågar hur du får båda "artikel"-värdena i samma kolumn, behöver du bara flytta underfrågan till en andra when
kontrollera inom det första case
uttryck, istället för som en egen kolumn:
SELECT
tbl.parent,
list.list_value,
tbl.values_column,
CASE
WHEN list.list_value = 'Article' THEN tbl.values_column
WHEN list.list_value = 'Paragraph' THEN (
SELECT
values_column
FROM
pro_table
WHERE
pro_table.id_pro_table = tbl.parent
)
END AS article,
CASE
WHEN list.list_value = 'Paragraph' THEN tbl.values_column
END AS paragraph
FROM
pro_table tbl
LEFT JOIN list ON list.id_list = tbl.id_t_list
Du kan ersätta underfrågan med en vänsterkoppling tillbaka till samma tabell och sammanföra resultaten:
SELECT
tbl.parent,
list.list_value,
tbl.values_column,
COALESCE (
CASE
WHEN list.list_value = 'Article' THEN tbl.values_column
END,
tbl2.values_column
) AS article,
CASE
WHEN list.list_value = 'Paragraph' THEN tbl.values_column
END AS paragraph
FROM
pro_table tbl
LEFT JOIN list ON list.id_list = tbl.id_t_list
LEFT JOIN pro_table tbl2 ON tbl2.id_pro_table = tbl.parent
... men det är att göra vissa antaganden om hierarkin, så du måste förmodligen skärpa sammanfogningen baserat på listtypen.
db<>fiol med påhittade relationer mellan samma sex rader som du visade, eftersom vi inte har de faktiska ID:n.