我正在运行此查询,但我不断收到缺少正确的括号错误消息。查询是较大查询的一部分。较大的查询运行良好,添加以下代码后,我得到了缺少的括号错误。
(( SELECT (CASE WHEN NAME = 'ELP' THEN
'ELP'
WHEN NAME = 'MDP' THEN 'MDP'
ELSE 'Other'
END ) AS P_TYPE
FROM JOB_INFORMATION_D
INNER JOIN EVENT_F
ON EVENT_F.JOB_INFO_ROW_ =JOB_INFORMATION_D.ROW_WID
INNER CANDIDATE_D ON CANDIDATE_D.ROW_WID = EVENT_F.CANDIDATE_ROW_WID
WHERE STS_NAME = 'Extended'
AND STEP_NAME = 'Offer'
AND inner.PZNUM = OUTERAPP.PI_CANDIDATE_NUM
ORDER BY DT ASC) T1 WHERE ROWNUM=1),
答案 0 :(得分:2)
您有两个WHERE子句,但只有一个SELECT语句。第二个WHERE子句在括号中的SELECT之外,因此不属于任何SELECT。
就像@mathguy所说的那样,缺少一个JOIN关键字。
将语句重写为
SELECT *
FROM
( SELECT
CASE WHEN NAME = 'ELP' THEN 'ELP'
WHEN NAME = 'MDP' THEN 'MDP'
ELSE 'Other'
END AS P_TYPE
FROM
JOB_INFORMATION_D
INNER JOIN EVENT_F
ON EVENT_F.JOB_INFO_ROW_ = JOB_INFORMATION_D.ROW_WID
INNER JOIN CANDIDATE_D
ON CANDIDATE_D.ROW_WID = EVENT_F.CANDIDATE_ROW_WID
WHERE
STS_NAME = 'Extended' AND
STEP_NAME = 'Offer' AND
inner.PZNUM = OUTERAPP.PI_CANDIDATE_NUM
ORDER BY DT ASC
)
WHERE
ROWNUM = 1
也有这些inner.PZNUM
和OUTERAPP.PI_CANDIDATE_NUM
,但是没有名为inner
和OUTERAPP
的表。该SQL完全错误,或者您没有向我们显示整个命令。
因此,您应该使用表别名,然后为所有使用的列添加这些别名的前缀。像现在这样,看不到这些列属于哪个表。
...
FROM
JOB_INFORMATION_D J
INNER JOIN EVENT_F E
ON E.JOB_INFO_ROW_ = J.ROW_WID
INNER JOIN CANDIDATE_D C
ON C.ROW_WID = E.CANDIDATE_ROW_WID
...