Hallo Ich versuche, basierend auf einem Kriterium für einen unserer Datenblöcke auswählen. Sie haben die Wahl einer -All-Wahl und ich habe Probleme, sie zum Laufen zu bringen oder besser zu funktionieren.Verbessern von Oracle Where-Klausel mit Gleichen oder in Werten
Wie ich es jetzt ist dies aber es scheint wirklich klobig und ich denke, manchmal tut es einige Werte abholen
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
Ich möchte etwas für die effiziente wie dies versuchen, aber ich bekomme immer fehlt Klammern/Keyword-Fehler und ich glaube nicht, dass das etwas damit zu tun hat. Würde jemand in der Lage
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)
wo in (subquery) oft besser ausgedrückt als eine innere Verknüpfung. Mind Sharing das vollständige SQL-Skript? – Twelfth
leider nicht, da ich im Grunde damit beauftragt bin, dieses Ding nach und nach zu überarbeiten und zu versuchen, das zu verbessern, was der Benutzer als erstes wünscht - das ist die Auswahl aller Codes oder die individuelle Auswahl –