MysterioJN
SQL-Guru
- Beiträge
- 158
Hoi zusammen,
hallo Ukulele
Ich habe einen Select, der neben einigen Infos aus verschiedenen Tabellen auch folgende Spalten eines Artikels aufwendig und zeitintensiv berechnet:
1. Absatz / Tage im Vertrieb = durchschnittlicher Tagesabfluss
2. Bestand / durchschnittlicher Tagesabfluss = Tage verfügbar
3. =getdate() + Tage verfügbar = Verfügbar bis Datum
Besteht die Möglichkeit, einzelne Ergebnisse als Alias oder so anzusprechen?
Die 2 kann ich nicht ohne das Ergebnis von 1 berechnen, die 3 nicht ohne das Ergebnis von 2.
Bestand + Alias 1 = Tage verfügbar
getdate + Alias 2 = Verfügbar bis Datum
Die Berechnungen wiederholen sich nämlich derzeit was zum Teil mehrere Minuten dauert.
Beispielauszug:
hallo Ukulele
Ich habe einen Select, der neben einigen Infos aus verschiedenen Tabellen auch folgende Spalten eines Artikels aufwendig und zeitintensiv berechnet:
1. Absatz / Tage im Vertrieb = durchschnittlicher Tagesabfluss
2. Bestand / durchschnittlicher Tagesabfluss = Tage verfügbar
3. =getdate() + Tage verfügbar = Verfügbar bis Datum
Besteht die Möglichkeit, einzelne Ergebnisse als Alias oder so anzusprechen?
Die 2 kann ich nicht ohne das Ergebnis von 1 berechnen, die 3 nicht ohne das Ergebnis von 2.
Bestand + Alias 1 = Tage verfügbar
getdate + Alias 2 = Verfügbar bis Datum
Die Berechnungen wiederholen sich nämlich derzeit was zum Teil mehrere Minuten dauert.
Beispielauszug:
Code:
(
SELECT SUM(aid_tab.stueck) FROM aid_tab WHERE artikel.anr = aid_tab.BestNr) AS ABSATZ,
(
SELECT tblBestand.verTageGesamt FROM tblBestand WHERE artikel.anr = tblBestand.BstNr) AS BESTAND,
CONVERT(DECIMAL(10,2),CAST((SELECT SUM(aid_tab.stueck) FROM aid_tab WHERE artikel.anr = aid_tab.BestNr) AS FLOAT) / (SELECT tblBestand.verTageGesamt FROM tblBestand WHERE artikel.anr = tblBestand.BstNr)) AS dTAGESABFLUSS,
CASE
WHEN CONVERT(DECIMAL(10,2),CAST((SELECT SUM(aid_tab.stueck) FROM aid_tab WHERE artikel.anr = aid_tab.BestNr) AS FLOAT) / (SELECT tblBestand.verTageGesamt FROM tblBestand WHERE artikel.anr = tblBestand.BstNr)) = 0
THEN '0'
ELSE FLOOR(artikel.bestand / CONVERT(DECIMAL(10,2),CAST((SELECT SUM(aid_tab.stueck) FROM aid_tab WHERE artikel.anr = aid_tab.BestNr) AS FLOAT) / (SELECT tblBestand.verTageGesamt FROM tblBestand WHERE artikel.anr = tblBestand.BstNr)))
END AS TAGEVERFUEGBAR,
FORMAT(DateAdd (DAY, CASE
WHEN CONVERT(DECIMAL(10,2),CAST((SELECT SUM(aid_tab.stueck) FROM aid_tab WHERE artikel.anr = aid_tab.BestNr) AS FLOAT) / (SELECT tblBestand.verTageGesamt FROM tblBestand WHERE artikel.anr = tblBestand.BstNr)) = 0
THEN '0'
ELSE FLOOR(artikel.bestand / CONVERT(DECIMAL(10,2),CAST((SELECT SUM(aid_tab.stueck) FROM aid_tab WHERE artikel.anr = aid_tab.BestNr) AS FLOAT) / (SELECT tblBestand.verTageGesamt FROM tblBestand WHERE artikel.anr = tblBestand.BstNr)))
END
,getdate()), 'yyyy-MM') AS VERFUEGBARbisDATUM
FROM
....
Zuletzt bearbeitet: