[英]Oracle SQL: Using same alias In CASE statement to select in one case one column, in the other two columns and another three with the same alias
我在 select 和 Oracle 案例中做錯了什么,我將感謝 stackoverflow 社區的幫助。
我想要做的是基於一個條件(一列的值)來返回一個或多個列。
我總是需要我的查詢返回三列:文章、段落、子段落
如果我正在檢查的列list_value的值為Article,那么我只需將Article和null返回到Paragraph和Sub Paragraph。 如果列的值為段落,我需要返回段落和文章,並且 Sub_Paragraph 應該是 null。 如果某列的值為 Sub_Paragraph,我需要返回文章、段落和 Sub_Paragraph 的所有值。
SELECT
CASE
WHEN att.list_value = 'Sub_Paragraph' THEN att.column_with_subpar_value
END AS sub_paragraph,
CASE
WHEN att.list_value = 'Sub_Paragraph' THEN att.column_with_par_value
END AS paragraph,
CASE
WHEN att.list_value = 'Sub_Paragraph' THEN att.column_with_article_value
END AS article,
CASE
WHEN att.list_value = 'Paragraph' THEN att.column_with_par_value
END AS paragraph,
CASE
WHEN att.list_value = 'Paragraph' THEN att.column_with_article_value
END AS article,
CASE
WHEN att.list_value = 'Article' THEN att.column_with_article_value
END AS article
FROM
att
WHERE
id = 1
但是通過這種方法,我得到了 article_1、article_2 等專欄。成功的最佳方法是什么?
查看您的要求,希望下面是您所期望的。
SELECT CASE
WHEN att.list_value = 'Sub_Paragraph' THEN
att.column_with_subpar_value
END AS sub_paragraph,
CASE
WHEN att.list_value in ('Sub_Paragraph', 'Paragraph') THEN
att.column_with_par_value
END AS paragraph,
CASE
WHEN att.list_value in ('Sub_Paragraph', 'Paragraph', 'Article') THEN
att.column_with_article_value
END AS article
FROM att
WHERE id = 1;
解決此問題的方法之一是將所有列連接到一個具有已知分隔符的列中,稍后可以將其拆分為所需的列集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.