Oracle查询,字段带有大小写…取决于子查询的上一个字段
我不知道(为了避免重写条件)如何根据另一个字段中的SELECT重新使用该字段(根据情况) 这里是我的疑问:Oracle查询,字段带有大小写…取决于子查询的上一个字段,oracle,subquery,case-when,Oracle,Subquery,Case When,我不知道(为了避免重写条件)如何根据另一个字段中的SELECT重新使用该字段(根据情况) 这里是我的疑问: SELECT U.ID AS ID, U.TITLE, U.VALID_FROM, U.VALID_TO, ( SELECT LEVEL FROM UNITS_LEVELS L WHERE L.ID = U.ID
SELECT U.ID AS ID,
U.TITLE,
U.VALID_FROM,
U.VALID_TO,
(
SELECT LEVEL
FROM UNITS_LEVELS L
WHERE L.ID = U.ID
) AS LEVEL,
CASE LEVEL
WHEN 3 THEN 1
ELSE 0
END AS IS_DIRECTORATE,
CASE LEVEL
WHEN 4 THEN 1
ELSE 0
END AS IS_UNIT,
FROM UNITS U;
因此,我想在这里创建一个字段,字段IS_directive和IS_UNIT来自前面从SELECT子查询创建的字段级别
你能帮我做那件事吗
提前感谢你的帮助
Seb我将重写您的查询,以便在两个表之间使用显式联接,这可以解决您遇到的许多问题:
SELECT
U.ID AS ID,
U.TITLE,
U.VALID_FROM,
U.VALID_TO,
L.LEVEL,
CASE L.LEVEL WHEN 3 THEN 1 ELSE 0 END AS IS_DIRECTORATE,
CASE L.LEVEL WHEN 4 THEN 1 ELSE 0 END AS IS_UNIT
FROM UNITS U
LEFT JOIN UNITS_LEVELS L
ON L.ID = U.ID;
请注意,为了保留查询的原始行为,我们在这里使用左连接,而不是内部连接。您必须确定级别的子查询不会导致过滤掉
单位中的记录。您不需要子查询,只需将它们连接起来并创建两个具有所需值的列即可:
SELECT U.ID AS ID,
U.TITLE,
U.VALID_FROM,
U.VALID_TO,
L.LEVEL, /*if you need this one keep it here */
CASE L.LEVEL /*and here the columns as you've defined them */
WHEN 3 THEN 1
ELSE 0
END AS IS_DIRECTORATE,
CASE L.LEVEL
WHEN 4 THEN 1
ELSE 0
END AS IS_UNIT,
FROM UNITS U, UNITS_LEVELS L
WHERE L.ID = U.ID;