[英]Select statement in Case statement in Oracle
SELECT (CASE WHEN T.ID = ( SELECT cte.REFERENCE FROM trans cte WHERE T.ID
= CTE.PARENT_ID) THEN cte.REFERENCE ELSE null END) AS name
FROM trans T
示例:我選擇一個交易值作為示例。 在 ID=1 的 trans 表中,然后在同一個表中我需要查找 PARENT_ID=1。 當我查找 parent_ID=1 時,它的 ID 值會有所不同。 這不是 ID=Parent_ID。 一旦我尋找 parent_ID=1 然后將其相應的參考值打印為名稱。 我在oracle中嘗試了上面的sql語句,但是沒有用。 您能否讓我知道,如何在 case 語句中編寫此語句。
除了子查詢,為什么不嘗試自聯接?
SELECT CASE
WHEN nvl(t1.id,-1) = nvl(t2.reference, -1) THEN t2.reference
ELSE 1
END AS number_col
FROM trans t LEFT JOIN trans t2 ON (t.id = t2.parent_id);
您也可以嘗試將其作為沒有 case 語句的子查詢
SELECT t.id,
NVL ((SELECT t2.reference
FROM trans t2
WHERE t.id = t2.parent_id AND t.id = t2.reference AND ROWNUM = 1),
1) AS number_val
FROM trans t
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.