Hallo zusammen,
ich komme mit einer Datenbankabfrage nicht so recht weiter und auch die Suche brachte keine entscheidenden Ergebnisse leider.
die Ausgangslage ist:
- Tabelle Kunden
- Tabelle Rechnungen
- Tabelle Gutschriften
Das Ergebnis soll recht simpel sein mit folgender Struktur
Kundennr | Kundenname | Kundengr | Umsatz Vorjahr | Umsatz lft. Jahr | Differenz
Ich bin aktuell so vorgegangen, dass ich mir zunächst mittels "WITH" die Daten hole/filtere für "Umsatzvorjahr" und "Umsatzlftjahr", hier nur mal exemplarisch für das Umsatzvorjahr:
Mein Select später sieht aktuell wie folgt aus:
Das Ergebnis für die "Umsätze" ist immer falsch. Habe ich einen Denkfehler? Schaue ich mir die Ergebnisse aus den Anfragen für "umsatzvorjahr" und "umsatzlfdjahr" an, ist alles noch korrekt.
Freue mich über Eure Ratschläge.
Danke
Sebastian
ich komme mit einer Datenbankabfrage nicht so recht weiter und auch die Suche brachte keine entscheidenden Ergebnisse leider.
die Ausgangslage ist:
- Tabelle Kunden
- Tabelle Rechnungen
- Tabelle Gutschriften
Das Ergebnis soll recht simpel sein mit folgender Struktur
Kundennr | Kundenname | Kundengr | Umsatz Vorjahr | Umsatz lft. Jahr | Differenz
Ich bin aktuell so vorgegangen, dass ich mir zunächst mittels "WITH" die Daten hole/filtere für "Umsatzvorjahr" und "Umsatzlftjahr", hier nur mal exemplarisch für das Umsatzvorjahr:
Code:
WITH umsatzvorjahr as (
SELECT
g.Kundennr AS Kundennr,
g.Kundengr AS Kundengr,
SUM(g.GU_Summe_MW) AS Umsatz
FROM
[Gutschriften] as g
GROUP BY
g.Kundennr, g.Kundengr, g.Buchungsdatum
HAVING /*Filtert Beginn des Vorjahres bis zum Stichtag des aktuellen Jahres*/
(g.Buchungsdatum <= (CONVERT (varchar(10),(DATEPART(DAY,@Datum_bis)),104) + '.' + CONVERT (varchar(10),(DATEPART(MONTH,@Datum_bis)),104) + '.' + CONVERT (varchar(10),(DATEPART(YEAR,@Datum_bis)-1),104)) AND
DATEPART(MONTH,g.Buchungsdatum) >= '1' AND
DATEPART(YEAR,g.Buchungsdatum) LIKE DATEPART(YEAR,@Datum_bis)-1)
UNION
SELECT
r.Kundennr AS Kundennr,
r.Kundengr AS Kundengr,
SUM(r.RE_Summe_MW) AS Umsatz
FROM
[Rechnungen] as r
GROUP BY
r.Kundennr, r.Kundengr, r.Buchungsdatum
HAVING /*Filtert Beginn des Vorjahres bis zum Stichtag des aktuellen Jahres*/
(r.Buchungsdatum <= (CONVERT (varchar(10),(DATEPART(DAY,@Datum_bis)),104) + '.' + CONVERT (varchar(10),(DATEPART(MONTH,@Datum_bis)),104) + '.' + CONVERT (varchar(10),(DATEPART(YEAR,@Datum_bis)-1),104)) AND
DATEPART(MONTH,r.Buchungsdatum) >= '1' AND
DATEPART(YEAR,r.Buchungsdatum) LIKE DATEPART(YEAR,@Datum_bis)-1)
Mein Select später sieht aktuell wie folgt aus:
Code:
SELECT
customer.No_ AS Kundennr,
customer.Name AS Kundenname,
customer.[Customer Group] AS Kundengruppe,
ISNULL(SUM(umsatzvorjahr.Umsatz),0) AS 'Umsatz Vorjahr',
ISNULL(SUM(umsatzlfdjahr.Umsatz),0) AS Umsatz,
ISNULL(SUM(umsatzlfdjahr.Umsatz),0) - ISNULL(SUM(umsatzvorjahr.Umsatz),0) AS Differenz
FROM
[Kunden] customer LEFT JOIN
umsatzvorjahr ON umsatzvorjahr .Kundennr = customer.No_ LEFT JOIN
umsatzlfdjahr ON umsatzlfdjahr.Kundennr = customer.No_
GROUP BY
customer.No_, customer.Name, customer.[Customer Group]
Das Ergebnis für die "Umsätze" ist immer falsch. Habe ich einen Denkfehler? Schaue ich mir die Ergebnisse aus den Anfragen für "umsatzvorjahr" und "umsatzlfdjahr" an, ist alles noch korrekt.
Freue mich über Eure Ratschläge.
Danke
Sebastian