簡體   English   中英

Oracle中Case語句中的Select語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM