Anmelden

View Full Version : CASE in Kombination mit IN



mojo
27-05-15, 10:32
Hallo zusammen,

mal wieder eine SQL-Problematik von mir...
Ich möchte in einer CASE-Anweisung mehrere Fälle über OR abfragen und wenn einer der Fälle zutrifft soll nicht mit =, sondern mit IN abgefragt werden.

Hintergrund:
Es gibt im Displayfile einige Selektionsfelder, und nur wenn mind. eines davon gefüllt ist sollen alle diese Felder im SQL berücksichtigt werden.

So wollte ich das bisher machen, aber RDI spuckt mir einen Fehler aus, dass "CASE not expected" sei.. :(


and TABFLD CASE
when :bth01 <> ' '
or :bth02 <> ' '
or :bth03 <> ' '
or :bth04 <> ' '
or :bth05 <> ' '
or :bth06 <> ' '
or :bth07 <> ' '
or :bth08 <> ' '
or :bth09 <> ' '
or :bth10 <> ' '
then in (:bth01, :bth02, :bth03,
:bth04, :bth05, :bth06,
:bth07, :bth08, :bth09,
:bth10)
else = TABFLD
end


Ich hoffe ich habe mich nicht zu umständlich ausgedrückt!

Viele Grüße!
mojo

Fuerchau
27-05-15, 10:41
So geht der Case auch nicht!

and CASE
when :bth01 <> ' '
or :bth02 <> ' '
or :bth03 <> ' '
or :bth04 <> ' '
or :bth05 <> ' '
or :bth06 <> ' '
or :bth07 <> ' '
or :bth08 <> ' '
or :bth09 <> ' '
or :bth10 <> ' '
then case when TABFLD in (:bth01, :bth02, :bth03,
:bth04, :bth05, :bth06,
:bth07, :bth08, :bth09,
:bth10) then 1 else 0 end
else 1
end = 1

mojo
27-05-15, 11:01
Das hab ich mir wohl n bisschen zu einfach vorgestellt.
Ich werde aber versuchen diese Art der CASE-Programmierung in meine Denkweise mit aufzunehmen... ;-)

Vielen Dank für die schnelle Hilfe!!
Beste Grüße!