Moinsen,
ich habe mir ein neues Thema angenommen und wollte gleich mein frisch erworbenes Wissen anwenden, an sich läuft die Abfrage, aber dauert mir zu lange... Wollte es gern live haben und nicht - wie bisher - zwischenspeichern.
Was ich auswerten möchte:
Den Nettoumsatz pro Monat/Jahr pro Disponent.
Mein aktueller Code:
Die Daten liegen wieder auf der Firebird_Datenbank, deswegen die Abfrage via OPENQUERY auf den linked Server.
Erkennt jemand Finanzierungsspielraum?
Vielen Dank!
Erik
ich habe mir ein neues Thema angenommen und wollte gleich mein frisch erworbenes Wissen anwenden, an sich läuft die Abfrage, aber dauert mir zu lange... Wollte es gern live haben und nicht - wie bisher - zwischenspeichern.
Was ich auswerten möchte:
Den Nettoumsatz pro Monat/Jahr pro Disponent.
Mein aktueller Code:
Code:
WITH parameter AS
(
SELECT CAST('01.01.'+CAST(DATEPART(YEAR,GETDATE())-3 AS NVARCHAR(MAX)) AS DATE) AS startdatum, DATEADD(DAY, -1, DATEADD(MONTH, 1, CAST('01.01.'+CAST(DATEPART(YEAR,GETDATE())-3 AS NVARCHAR(MAX)) AS DATE))) AS endedatum
UNION ALL
SELECT DATEADD(MONTH, 1, startdatum) AS startdatum, DATEADD(DAY, -1, DATEADD(MONTH, 2, startdatum)) AS endedatum
FROM parameter
WHERE DATEADD(MONTH, 1, startdatum) <= CAST('31.12.'+CAST(DATEPART(YEAR, GETDATE())-3 AS NVARCHAR(MAX)) AS DATE)
)
, thirdyear AS
(
SELECT disponent, buchdatum, umsatz FROM OPENQUERY([L1_MAND3_RO],
'
SELECT k.disponent, r.buchdatum, CASE WHEN r.dnetto IS NULL THEN 0 ELSE r.dnetto - (r.dbrutto * (r.skonto1PR/100)) END AS umsatz
FROM rechnung r, kunden k
WHERE r.kundennr = k.kundennr
'), parameter
WHERE buchdatum >= startdatum AND buchdatum <= endedatum
)
SELECT t1.startdatum, t2.disponent, SUM(t2.umsatz) AS umsatz
FROM parameter t1, thirdyear t2
WHERE t2.buchdatum >= t1.startdatum AND t2.buchdatum <= t1.endedatum
GROUP BY t1.startdatum, t2.disponent
ORDER BY t1.startdatum ASC
Die Daten liegen wieder auf der Firebird_Datenbank, deswegen die Abfrage via OPENQUERY auf den linked Server.
Erkennt jemand Finanzierungsspielraum?
Vielen Dank!
Erik