Einzelnen Beitrag anzeigen

PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#1

SQL-CASE wird immer für alle Ausdrücke geprüft?

  Alt 14. Mai 2009, 10:23
Datenbank: ADS • Version: 9.10 • Zugriff über: Advantage Komponenten
Hallo allerseits,

ich habe eine Frage, die sich nicht auf Delphi, sondern auf SQL des ADS Advantage Datenbase Server bezieht.

Ich habe ein SQL-Statement der folgenden Form:
SQL-Code:
SELECT
 CASE feld_A
  WHEN 1 THEN feld_B / feld_C
  WHEN 2 THEN feld_B / feld_D
 END
FROM tabelle
Es gilt, wenn feld_A = 2 dann feld_C = 0. feld_D ist immer > 0.

Wenn ich diese Abfrage am Datenbankserver ausführe, wird immer eine Fehlermeldung 'Division by zero' angezeigt. Es scheint, dass der ADS-SQL-Server die Berechnung immer und für jeden Fall/Ausdruck durchführt, egal ob die Bedingung zutrifft oder auch nicht.

Kann mir das jemand bestätigen oder habe ich am ADS irgendwas falsch eingestellt?

Kann ich das Problem nur umgehen, indem ich das folgende, recht umständliche mache:
...WHEN 1 THEN (CASE feld_C WHEN 0 THEN 0 ELSE feld_B / feld_C END) END...
Gruß,
Peter
  Mit Zitat antworten Zitat