मान लें कि आपकी सबक्वायरी को पहले से ही सही मान वापस मिल गया है, और आप केवल यह पूछ रहे हैं कि एक ही कॉलम में दोनों 'लेख' मान कैसे प्राप्त करें, आपको बस सबक्वेरी को दूसरे when
में ले जाना है। पहले case
के भीतर जांचें अभिव्यक्ति, इसके बजाय अपने स्वयं के कॉलम के रूप में:
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
आप सबक्वेरी को लेफ्ट जॉइन के साथ उसी टेबल पर वापस ला सकते हैं और परिणामों को जोड़ सकते हैं:
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
... लेकिन यह पदानुक्रम के बारे में कुछ धारणाएँ बना रहा है, इसलिए आपको शायद सूची प्रकार के आधार पर जुड़ने को कसने की आवश्यकता है।
db<>fiddle आपके द्वारा दिखाई गई छह पंक्तियों के बीच आविष्कृत संबंधों के साथ, क्योंकि हमारे पास वास्तविक आईडी नहीं हैं।