PDA

View Full Version : aufrunden SQL



Seiten : 1 [2]

B.Hauser
12-08-16, 06:56
Ich will auch mal Klugscheißer des Tages werden!

@Malzusrex:
Bei Deiner Case Anweisung wird, sofern die Ausgangszahl eine ganze Zahl ist, 0,5 hinzuaddiert. Ich glaube, das war nicht gewünscht.

@Dieter:
Nicht immer ist das kaufmännische Runden erwünscht.
Aufrunden und Abfrunden auf die nächste Ganzzahl haben durchaus ihre Existenzberechtigung. (vergl. Gaußklammer)
Wenn ich auf eine Palette 20 Kartons packen kann, dann benötige ich für 100 Kartons 5 Paletten, für 101 Kartongs jedoch 6 Paletten.

... und seit 7.3 kann die Funktion ROUND auch mit nur einem Parameter angegeben werden. In diesem Fall wird auf die nächste Ganz-Zahl kaufmännisch gerundet.
... sofern man bei der Funktion ROUND im zweiten Parameter eine negative Zahl angibt, kann man auch kaufmännisch z.B. auf den 10er (-1), auf den Hunderter (-2) etc. runden.

Birgitta

malzusrex
12-08-16, 07:11
Ich will auch mal Klugscheißer des Tages werden!

@Malzusrex:
Bei Deiner Case Anweisung wird, sofern die Ausgangszahl eine ganze Zahl ist, 0,5 hinzuaddiert. Ich glaube, das war nicht gewünscht.


Birgitta

Stimmt! Habe es abgeändert
(Auch wenn deine Variante immer noch einfacher und übersichtlicher ist)


select myfeld,
case when MyFeld-int(MyFeld)=0 then Myfeld else
case when MyFeld-int(MyFeld) between 0,51 and 0,99
then int(MyFeld) + 1 else int(Myfeld) +0,5 end end
from MyFile

Gruß Ronald

B.Hauser
12-08-16, 07:54
Auch das kann man vereinfachen!

select myfeld,
case when MyFeld-int(MyFeld) = 0 then Myfeld
when MyFeld-int(MyFeld) between 0,51 and 0,99
then int(MyFeld) + 1
else int(Myfeld) +0,5 end
from MyFile

Heute bekomme ich wirklich den Klugscheißer-Preis.

Birgitta

Fuerchau
12-08-16, 08:09
Ist doch auch eine Auszeichnung;-)!
Ich sag ja immer "Warum einfach wenn es auch komplizierter geht".
Vielleicht kann man ja den Case noch erweitern auf "Rundungen" mit 0,25, 0,10 und 0,05...
Dann wird es erst vollständig.

malzusrex
12-08-16, 08:26
Und ich habe wieder was gelernt.
Bis eben gab es für mich beim CASE nur
Case when ... then ... else .. end.

Insofern ist "Klugscheißen" doch was Gutes ;-)

Danke und schon mal ein schönes Wochenende
Ronald

Fuerchau
12-08-16, 08:35
Auch dabei gibts dann trotzdem 2 Varianten:

case Ausdruck
when Const1 then ...
when Const2 then ...
else ...
end

Z.B.
case Faktor
when '2' then 10
when '3' then 100
when '4' then 1000
else 1
end

Der Nachteil ist eben, dass man nur Konstanten verwenden darf.

Der "case when Asdruck then ..." erlaubt dann eben wieder hochkomplexe Abfragen, die auch skalare Subselects einschließen.

BenderD
12-08-16, 08:43
... für die 3. Klasse geht die Klugscheißerei noch durch, für die 6. Klasse reicht es allenfalls noch knapp für eine 4. Negative Zahlen werden halt nach Betrag gerundet und da wird das Case Konstrukt zum Käse Konstrukt und taugt genauso wenig wie Ceiling.

D*B