为什么此查询在Oracle数据库中返回缺少的关键字错误:
注: Case条件用于为where条件选择适当的WHERE语句。这是一个mysql查询,我正在迁移到Oracle。
SELECT OFFICE_TYPE_CD, OFFICE_TYPE_DESC
FROM m_office_types
WHERE CASE
WHEN OFFICE_TYPE_CD IN (7)
THEN
office_level_cd < (SELECT DISTINCT office_level_cd
FROM m_office_types
WHERE office_type_cd = 7
AND RECORD_STATUS <> 'D')
ELSE
office_level_cd <= (SELECT DISTINCT office_level_cd
FROM m_office_types
WHERE office_type_cd = 7
AND RECORD_STATUS <> 'D')
END
AND RECORD_STATUS = 'C'
AND state_cd = 27
AND OFFICE_NAME IS NOT NULL发布于 2016-11-24 07:16:45
你可能想写这样的东西:
SELECT OFFICE_TYPE_CD, OFFICE_TYPE_DESC
FROM m_office_types
WHERE RECORD_STATUS = 'C'
AND state_cd = 27
AND OFFICE_NAME IS NOT NULL
AND ( ( OFFICE_TYPE_CD IN (7)
AND office_level_cd < (SELECT DISTINCT office_level_cd
FROM m_office_types
WHERE office_type_cd = 7
AND RECORD_STATUS <> 'D'))
OR ( OFFICE_TYPE_CD NOT IN (7)
AND office_level_cd <= (SELECT DISTINCT office_level_cd
FROM m_office_types
WHERE office_type_cd = 7
AND RECORD_STATUS <> 'D')))请注意,它可以简化,我这样写只是为了清楚。
https://stackoverflow.com/questions/40779888
复制相似问题