你好我正在尝试基于我们的一个数据块的标准进行选择。他们可以选择所有选择,并且无法使其工作或运行得更好。在等于或等于值的地方改进Oracle Where子句
我怎么会有现在这一点,但它似乎真的笨重,有时我觉得它不拿起一些值
where SLRRDEF_RDEF_CODE = (select CASE
WHEN :parm_dd_rdef.RDEF_DESC like '-All-' Then 'A100'
WHEN :parm_dd_rdef.RDEF_DESC like '-All-' Then 'A110'
WHEN :parm_dd_rdef.RDEF_DESC like '-All-' Then 'B100'
WHEN :parm_dd_rdef.RDEF_DESC like '-All-' Then 'B110'
WHEN :parm_dd_rdef.RDEF_DESC like '-All-' Then 'B120'
WHEN :parm_dd_rdef.RDEF_DESC like '-All-' Then 'B130'
WHEN :parm_dd_rdef.RDEF_DESC like '-All-' Then 'W110'
WHEN :parm_dd_rdef.RDEF_DESC like '-All-' Then 'W590'
ELSE :parm_dd_rdef.RDEF_CODE
END from dual
我想尝试一些高效这样的,但我得到越来越失踪括号/关键字错误,我不认为这与它有任何关系。会有人能够帮助
where (CASE
WHEN :parm_dd_rdef.RDEF_DESC like '-All-' THEN SLRRDEF_RDEF_CODE in ('A100','A110','B100','B110','B120','B130','W110','W590')
WHEN :parm_dd_rdef.RDEF_DESC not like '-All-' THEN SLRRDEF_RDEF_CODE = :parm_dd_rdef.RDEF_CODE
END)
AND
where SLRRDEF_RDEF_CODE in (CASE WHEN :parm_dd_rdef.RDEF_DESC like '-All-'
THEN ('A100','A110','B100','B110','B120','B130','W110','W590')
ELSE :parm_dd_rdef.RDEF_CODE)
其中(子查询)常能较好地表达。介意分享完整的SQL脚本? – Twelfth
不幸的是,因为我基本上的任务是一次改写这个东西,并试图改进用户首先想要的东西 - 这就是所有的代码选择或个人选择 –