Dengan asumsi subquery Anda sudah mendapatkan nilai yang benar kembali, dan Anda hanya bertanya bagaimana cara mendapatkan kedua nilai 'artikel' di kolom yang sama, yang perlu Anda lakukan hanyalah memindahkan subquery ke when
kedua periksa dalam case
pertama ekspresi, alih-alih sebagai kolomnya sendiri:
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
Anda dapat mengganti subquery dengan join kiri kembali ke tabel yang sama dan menggabungkan hasilnya:
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
... tapi itu membuat beberapa asumsi tentang hierarki, jadi Anda mungkin perlu mengencangkan gabungan berdasarkan jenis daftar.
db<>biola dengan hubungan yang ditemukan antara enam baris yang sama yang Anda tunjukkan, karena kami tidak memiliki ID yang sebenarnya.