Oracle中Case语句中的Select语句

阿希拉
  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的跨表中,然后在同一表中,我需要查找PARENT_ID = 1。当我寻找parent_ID = 1时,它的ID值将有所不同。这不是ID = Parent_ID。一旦我寻找parent_ID = 1,然后将其对应的参考值打印为名称。我在oracle中尝试了上面的sql语句,但是没有用。您能否让我知道,如何在case语句中编写此语句。

EJ埃吉德

为什么不尝试子联接,而不是子查询?

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章