-
Rechnen mit SQL
Hallo zusammen,
ich muss mit SQL rechnen und führe dabei verschiedene
Befehle aus, bis auf einen klappt das auch wunderbar !
Folgende Rechenformel macht mich "fertig"...
select cast( 9920 /12000 * 145000 as decimal(13,0) ) as wert from datei where feld=1
Ich habe schon die verschiedensten "Klammern" gesetzt, habe auch über "Punkt vor Strichrechnung" nachgedacht und die Formel vom Ursprung ((12000-2080)/12000 * 145000) auf den o.g. Wert geändert...
ABER es kommt immer 0 raus !!!!!
Lt. "Windows calc" und "Excel" müsste aber 119866,666666 rauskommen !
In Excel lautet die Formel "=(E2-E3)/E2*B2", wobei die Zellen..
E2 = 12000
E3 = 2080
B2 = 145000
die gezeigten Werte haben ! !
Hat irgend jemand einen Tipp oder vielleicht sogar die Lösung ?
Vielen Dank im Voraus !
Peet
-
Tag auch,
versuhe mal im STRSQL
PHP-Code:
values((12000,0-2080)/12000*145000)
Da solltest du dein Ergebnis erhalten
Gruß
Ronald
-
Vielen Dank !
Aber ich kriege es leider nicht hin oder stehe gerade auf dem Schlauch 
Kannst du mir den SQL-Befehl vollständig darstellen ??
Zumindest den "select ....." bis "from" ?
Vielen Dank im Voraus !
Peet
-
Hallo,
das hat mit den Typen und Längen der Zwischenergebnisse zu tun. Probier mal folgendes:
Code:
select cast(cast((12000 - 2080) as decimal(13 , 5)) / cast(12000 as decimal(13 , 5)) * 145000 as decimal(13 , 0)) as wert from sysibm.sysdummy1
Gruß,
KM
-
Du brauchst nur das was in den Klammer von Values stehen in dein Selcect einfügen.
oder eben meine Zeile ohne irgend etwas anderes im STRSQL eingeben. Da sollte dann schon dein Ergebnis kommen.
Die Antwort von KM sieht natürlich auch elegant aus und liefert dir dein Ergebnis.
Gruß
Ronald
-
Die Erklärung ist ganz einfach!
Besteht eine Rechnung aus 2 Integer-Werten, ist das Ergebnis wieder ein Integer-Wert (so lautet die Regel und nicht nur in SQL bzw. auf der IBM i).
Da für 9920, 12000 und 145000 keine Nachkommastellen angegeben wurden, werden diese Werte als Integer-Werte behandelt.
9920 / 12000 = 0,8266666...
Da das Ergebnis jedoch wieder ein Integer-Wert ist, werden die Nachkommastellen abgeschnitten, d.h. statt 0,826... mit 0 weitergerechnet.
Werden bei einer Zahl Nachkommastellen angegeben, so wird diese nicht mehr als Integer erkannt, sondern als Fließkomma interpretiert und das Ergebnis ist wiederum ein Fließkomma-Wert.
Du hast also die Möglichkeit die einzelnen Werte explizit z.B. auf Dezimal zu casten, oder einfach die erste Zahl mit 0 Nachkommastellen angeben:
Natürlich sollte man die Reihenfolge beachten, wird 145000 als Fließkomma interpretiert und die anderen beiden Werte als Integer, ist das Kind bereits in den Brunnen gefallen. Da keine Klammern gesetzt wurden wird zunächst 9920 / 12000 dividiert, und das Ergebnis (0) mit 145000 multipliziert. 0 * irgendwas = 0.
Ich gehe jedoch davon aus, dass dies nur ein Test war und die Spalten in der Datei nicht als Integer-Werte definiert sind, sondern als gepackte oder gezonte numerische Werte.
Kleiner Tipp, ich würde die Division immer am Ende durch führen, also:
Birgitta
-
Ich nehme mal an, dass die Konstanten ggf. nur Beispiele sind und ggf. auch aus Feldern kommen.
Sind die Felder Ganzzahl und man möchte Nachkomma, so ist wenigstens ein Feld mit Nachkomma zu casten:
dec(F1, 11, 2) / dec(F2, 11, 2) * dec(F3, 11, 2)
Wichtig ist, dass ggf. Zwischenschritte gerundet werden sollten, da SQL u.U. abschneidet, z.B.:
round(dec(F1, 11, 2) / dec(F2, 11, 2), 2) * dec(F3, 11, 2)
-
Vielen Dank an Alle !
Jetzt habe ich es "hingekriegt" 
Und an Britta den "erweiterten" Dank für die zusätzlichen "ausführenden" Erklärungen !!!
Weiterhin viel Erfolg und ein schönes Wochenende !!
Gruß
Peet
Similar Threads
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By hzille in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 06-07-04, 10:38
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks