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语句中编写此语句。
为什么不尝试子联接,而不是子查询?
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] 删除。
我来说两句