你好我正在嘗試基於我們的一個數據塊的標準進行選擇。他們可以選擇所有選擇,並且無法使其工作或運行得更好。在等於或等於值的地方改進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
不幸的是,因爲我基本上的任務是一次改寫這個東西,並試圖改進用戶首先想要的東西 - 這就是所有的代碼選擇或個人選擇 –