• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Gelösst!!! Base-Abfrage - SQL-Berechnung in Spalte

OP
Uwe.Lü

Uwe.Lü

Hacker
Vielen Dank für Deine schnelle Antwort, aber das geht etwas am Ziel vorbei.
Winston nutze ich seit Jahren, um die Umsatzsteuervoranmeldung online zum FA zu schicken, aber vorher muss ich meine Belege erfassen, was schon passiert ist. Die Frage geht dahin, warum die Abfrage meiner Frau:
Code:
"01 DB BHS Claudia"."Betrag brutto" / ( 1 + "Steuersatz" / 100 ) AS "Betrag Netto",
den Nettobetrag errechnet, aber meine
Code:
 "01 DB BHS Uwe"."Betrag brutto" / ( 1 + "Steuersatz" / 100 ) AS "Betrag Netto",
nur den eingebenen Bruttobetrag ausgibt. :-?
 
OP
Uwe.Lü

Uwe.Lü

Hacker
Was mir gerade nach eingefallen ist, beide Tabellen liegen in der selben Datenbank.
Kann das vielleicht der Grund dafür sein?
 
Ich bin keine Expertin auf diesem Gebiet und kann deshalb nur vermuten!

Uwe.Lü schrieb:
Was mir gerade nach eingefallen ist, beide Tabellen liegen in der selben Datenbank.
Kann das vielleicht der Grund dafür sein?
Nein, das glaube ich nicht. Mehrere Tabellen in einer db ist usus und mir fällt kein Fall ein, wo das query aus einer Tabelle funktioniert,
aus der zweiten nicht und das auf Grund irgendeiner Beeinflussung untereinander, weil in einer db. Das ist wenig wahrscheinlich.
Ich glaube eher, dass du beim Anlegen der beiden Tabellen unterschiedlich vorgegangen bist.
Das kann sein ein abweichender Datentyp für ein bestimmtes Feld, oder
du hast beim Erstellen der Tabellen unterschiedliche records eingetragen oder etwas in einem Feld nicht eingetragen.
An deiner Stelle würde ich die beiden Tabellen auf solche Unterschiede hin untersuchen.

Gruß
Gräfin Klara
 
OP
Uwe.Lü

Uwe.Lü

Hacker
abgdf schrieb:
Oder vielleicht ein Encodierungs-Problem?
Das glaube ich nicht, da die Abfrage meiner Frau rechnet, wie sie soll. Die aktuelle JRE habe ich auch installiert.
Gräfin Klara schrieb:
Ich glaube eher, dass du beim Anlegen der beiden Tabellen unterschiedlich vorgegangen bist.
Genau das habe ich mehrfach überprüft, werde das aber noch einmal machen. Manchmal sitzt ja der Fehler 70 cm vor dem Bildschirm ;)
 
OP
Uwe.Lü

Uwe.Lü

Hacker
So, jetzt habe ich etwas rum probiert.
Code:
"Betrag brutto" / 1.19 AS "Erg Netto",
funktioniert, nur werden alle Werte um 19% vermindert, was aber nicht der Realität entspricht. Also
Code:
"Betrag brutto" / ( 1 + "Steuersatz" / 100 ) AS "Erg Netto",
was ja rechnerisch das gleiche ist, gibt in der Spalte "Erg Netto" den Bruttobetrag aus.
Bei meiner Frau sieht die Rechenspalte gleich aus
Code:
"Betrag brutto" / ( 1 + "Steuersatz" / 100 ) AS "Betrag Netto"
und rechnet, wie gewollt.
 

abgdf

Guru
Und auf so einer wackligen Grundlage ("Geht vielleicht, geht vielleicht nicht, keine Ahnung, ob und wieso") willst Du Deine Steuern automatisiert berechnen? :???:
 

abgdf

Guru
Dann würde ich wenigstens die Probe machen:

- Aus der Datenbank ohne Berechnungen nur alle Buchungssätze mit umsatzsteuerrelevaten Einnahmen ausgeben lassen,
- Daraus die Spalte mit den Beträgen extrahieren,
- Diese zusammenrechnen (in LibreOffice oder mit Perl),
- Die Umsatzsteuer berechnen.
 

goeba

Hacker
Hallo,
ich vermute hier ein Problem mit integer vs. float.

Eventuell liegen bei Deinen Buchungen Ganzzahlen vor, bei denen Deiner Frau aber Kommazahlen.

Die übrigen Werte werden implizit in den Datentyp des ersten Wertes umgewandelt, daher klappt es bei Deiner Frau, bei Dir nicht.

Ich würde also statt "1" immer "1.0" schreiben, statt /100 natürlich /100.0 , und wenn in den Tabellen tatsächlich Ganzzahlen stehen, diese vorher nach Float umwandeln (oder gleich als Kommazahlen in die Tabelle schreiben).

Wie das im Detail geht, findest Du sicher im Internet, ich bin da auch nicht so flüssig (bin über dieses Problem aber oft genug beim Programmieren gestolpert, implizites Casting ist in jeder Programmiersprache anders und ggf. auch je nach Datenbank unterschiedlich).

Einstieg in die Lektüre vielleicht hier:

https://stackoverflow.com/questions/9410686/convert-int-to-float-in-sql

Gruß!
 
OP
Uwe.Lü

Uwe.Lü

Hacker
goeba schrieb:
Ich würde also statt "1" immer "1.0" schreiben, statt /100 natürlich /100.0 , und wenn in den Tabellen tatsächlich Ganzzahlen stehen, diese vorher nach Float umwandeln (oder gleich als Kommazahlen in die Tabelle schreiben).
Das war die Lösung, vielen Dank
 
Oben