2016-07-19 4 views

Antwort

3

Verwendung case:

select * 
from members m 
where abs(due/30*(case when service_charge = 0 then 1 else service_charge end) >= 0 and 
     abs(due/30*(case when service_charge = 0 then 1 else service_charge end)<= 200 
group by id; 

Doch dies ist in der Regel behandelt mit NULLIF() - was bedeutet, dass NULL aus der Berechnung zurückgegeben werden würde:

select * 
from members m 
where abs(due/30 * nullif(service_charge, 0) >= 0 and 
     abs(due/30 * nullif(service_charge, 0) <= 200 
group by id; 

auch nicht verwenden einfache Anführungszeichen, numerische Konstanten. Dies verwirrt Personen und könnte den SQL-Optimierer verwirren.

+0

Überprüfung Danke für die Info – user3619389

+0

es funktioniert nicht, ich bekomme die gleichen Informationen – user3619389

+1

Könnten Sie einige Dummy-Daten zu Ihrer Frage hinzufügen? Normalerweise sind seine Antworten richtig auf das Geld. – davejal

Verwandte Themen