Re: Abfrage meherer MWSt.-Sätze
- From: "Elmar Boye" <ElmarB@xxxxxxx>
- Date: Mon, 6 Jun 2005 20:57:45 +0200
Ralph Rutschmann <rutschm@xxxxxxx> schrieb ...
> Nun fragte ich bisher die Daten ab und berechnete die Umsatz- bzw.
> Mehrwertsteuer als auch die Bruttobeträge fliegend (neudeutsch "on the
> fly"):
>
>> Select rechnung.rg_serial As rg_serial, ;
>> Sum(rg_pos.e_preis * rg_pos.menge) As Netto, ;
>> Sum(((rg_pos.e_preis * rg_pos.menge) / 100) * ;
>> rg_pos.mwst_prozent) As MWSt, ;
>> Sum((rg_pos.e_preis * rg_pos.menge) + ((rg_pos.ges_preis / 100) * ;
>> rg_pos.mwst_prozent)) As Brutto From rg_pos ;
>> Where rg_pos.rg_nr = rechnung.rg_nr
Wenn Du die Daten direkt berechnen willst, wogegen zunächst nichts
einzuwenden ist (wenn der Prozessor nicht zu schwachbrüstig ist),
solltest Du Dir einen Gefallen tun und das Ganze in einer Sicht
vorbereiten:
CREATE VIEW Rechnungspositionen
AS
SELECT
rg_pos.rg_serial As rg_serial,
rg_pos.mwst_prozent,
-- weitere statische Spalten.
CAST(rg_pos.e_preis * rg_pos.menge AS decimal(14, 2)) AS Netto,
CAST(CAST((rg_pos.e_preis * rg_pos.menge AS decimal(14, 2))
* rg_pos.mwst_prozent * 0.01) AS decimal(14, 2)) AS MWSt
CAST(rg_pos.e_preis * rg_pos.menge AS decimal(14, 2))
+ CAST(CAST((rg_pos.e_preis * rg_pos.menge AS decimal(14, 2))
* rg_pos.mwst_prozent * 0.01) AS decimal(14, 2)) AS Brutto
FROM rg_pos
GO
Die diversen CAST sind nämlich schlussendlich notwendig,
damit Du ein richtiges Ergebnis ohne Rundungsfehler
bekommst (NUR wenns blosse Statistik ist kannst Du Dir
das ggf. sparen).
Voraussetzung dafür ist auch das die Ausgangsspalten entsprechend
genau sind (also decimal und nicht etwa float).
> Abgesehen davon, daß ich nicht verstehe, wieso ich eine Fehlermeldung
> (SQL: GROUP BY clause is missing or invalid) bekomme, wenn ich "From
> rechnung, rg_pos Where..." eingebe
wo jetzt immer Dein "rechnung.rg_serial" herkommt, das müsstest Du
schon ins GROUP BY Aufnehmen
>ist mir auch nicht klar, wie ich
> z.B. unterschiedliche Mehrwertsteuersätze je Rechnung getrennt und
> sortiert ausgeben kann, einschließlich der jeweiligen Summen im
> Detail, die Summen gruppiert nach MWSt.-Sätzen, als auch insgesamt
Anhand der Sicht kannst Du nun verschiedene Gruppierungen bilden.
Je nach Anzeige mag es dabei sinnvoller sein die Daten intern
zusammenzufassen, oder aber über UNION in einem einem Ergebnis.
(auch WITH ROLLUP mag eine Möglichkeit sein, lasse ich aber mal weg)
Die Lösung mit UNION könnte wie folgt aussehen:
-- Für Summen je Rechnung
SELECT 0 AS Detail,
rg_serial,
mwst_prozent, -- hier besser Schlüssel die MWSt Tabelle besser, s. u.
SUM(Netto) AS SummeNetto,
SUM(MWSt) AS SummeMWst,
SUM(Brutto) AS SummeBrutto
FROM Rechnungspositionen
GROUP BY rg_serial, mwst_prozent
UNION ALL SELECT
1 AS Detail, -- Für Gesamtsumme je MWSt Satz
NULL AS rg_serial,
mwst_prozent,
SUM(Netto) AS SummeNetto,
SUM(MWSt) AS SummeMWst,
SUM(Brutto) AS SummeBrutto
FROM Rechnungspositionen
GROUP BY mwst_prozent
-- Gesamtsumme
UNION ALL SELECT
2 AS Detail, -- für Gesamt Summe
NULL AS rg_serial
NULL AS mwst_prozent,
SUM(Netto) AS SummeNetto,
SUM(MWSt) AS SummeMWst,
SUM(Brutto) AS SummeBrutto
FROM Rechnungspositionen
> die Endsummen je Rechnung. Ganz fein wären dann noch die Gesamtsummen
> aller Rechnungen. :-)
das Erweitern um weitere Detail/Summen-Ebenen überlasse ich mal zum
Üben Dir.
Werden viele Rechnungen so verdichtet, lohnt es die Daten der untersten
Detail-Ebene zunächst in eine temporäre Tabelle zu verdichten und
die weiteren Summierungen daraus vorzunehmen.
>
> Also, wenn eine Rechnung z.B. 10 Positionen hat, 3 davon
> Mehrwertsteuersatz 0% (befreit), 3 davon Mehrwertsteuersatz 7% (halb)
> und der Rest davon Mehrwertsteuersatz 16% (normal), alle bunt
> gemischt, wie kriege ich die Daten der Rechung nach
> Mehrwertsteuersätzen sortiert und dann noch zu jedem
Wie oben im Kommentar angedeutet, wäre es beim Gruppieren sinnvoller
auf den MWSt Schlüssel und nicht auf den Prozentsatz zu verweisen.
Da es u. U. bei Auslandrechnungen möglich ist das ein anderes Land
gleiche Sätze hat, kriegt man da evtl. Probleme, wenn man die
einfach addiert.
Über den Schlüssel kannst Du zudem weiteren Text etc. zuordnen.
Und könnte oben bereits in der Sicht eingebunden werden.
> Vor allem, wenn ich
> vorher nicht weiß, ob überhaupt und wenn ja wie viele der möglichen
> Mehrwertsteuersätze auf einer speziellen Rechnung vorkommen?
Der Schlüssel sollte einen Steuersatz eindeutig identifizieren.
Gruss
Elmar
.
- Follow-Ups:
- Re: Abfrage meherer MWSt.-Sätze
- From: Ralph Rutschmann
- Re: Abfrage meherer MWSt.-Sätze
- References:
- Abfrage meherer MWSt.-Sätze
- From: Ralph Rutschmann
- Abfrage meherer MWSt.-Sätze
- Prev by Date: Re: UserID = Admin
- Next by Date: Re: SQL-Mail Fehler22022
- Previous by thread: Re: Abfrage meherer MWSt.-Sätze
- Next by thread: Re: Abfrage meherer MWSt.-Sätze
- Index(es):
Relevant Pages
|