select :=> das ist zu viel für mich
Irgendwie wollen meine Hirnwindungen hier nicht mitmachen:
Ich habe eine Tabelle mit Lagerbeständen einzelner SKU
Ich habe mit
select 'Lagerbestände' where Datum >= myStartdate and Datum <= myEnddate
Die Datensätze bereits auf Datumsebene eingegrenzt. Aber, jede SKU hat in diesem Datumsbereich etliche (nämlich) Tageslagerbestände, und ich benötige je SKU nur den höchsten, also Spitzenwert.
Hab schon einiges mit "for i" usw. versucht, aber irgendwie ist alles Murks was ich zustande gebracht habe.
Am Ende benötige ich die Summe aller Höchstwerte.
Wie komme ich da weiter?
Vielen Dank schon mal.
19 Antworten
-
Hi Arwin. Versuche mal so. Mirko
let allDat := unique((select 'Lagerbestände')[myStartdate <= Datum and Datum <= myEnddate].Datum); sum(for i in allDat do for j in select 'Lagerbestände' do let allSKUonDate := (select 'Lagerbestände')[Datum = i].SKU; if contains(allSKUonDate, j.SKU) and j.SKU = max(allSKUonDate) then j.SKU end end end)
-
...oder noch kürzer
let allDat := unique((select 'Lagerbestände')[myStartdate <= Datum and Datum <= myEnddate].Datum); sum(for i in allDat do max((select 'Lagerbestände')[Datum = i].SKU) end)
-
...P.S. Notfalls eine Dummydatei mit einer paar Dummydaten für mich Dummy hochladen ;-)
-
Bei mir sind die jeweils höchsten Werte eines Tages: 234+232+1023+776=2265?
-
Für Deine ursprüngliche Tabelle kannst Du ja mal folgendes austesten:
do as server let myStartdate := date(2023, 6, 1); let myEnddate := date(2023, 6, 31); let allDat := unique((select 'Lagerbestände')[myStartdate <= Datum and Datum <= myEnddate].Datum); sum(for i in allDat do max((select 'Lagerbestände')[Datum = i].PFOWN) end) end
Ich schlafe jetzt erstmal darüber ;-).
-
Moin.
-
Hi Arwin. Sagen wir Datum von 1.5.23 bis 30.06.23 und SKU = M4000.
Mai-Maximum 300, Juni-Maximum 200.
Sollen diese addiert werden (500) oder willst Du nur das Maximum von Mai und Juni (300) für die SKU =M4000? Oder soll es grundsätzlich nur eine Monatsstatistik werden?
-
Freut mich, dass es dann doch noch gut wurde. Ich denke, dass auch das zweite select zeitlich noch eingegrenzt werden muss um fehlerhafte Berechnungen zu vermeiden. Ich habe es hier mal in ein Dashboard gelegt. Vielleicht kannst Du es ja noch gebrauchen. LG Mirko
let allDat := unique((select Lagerbestand)[myStartdate <= Datum and Datum <= myEnddate].SKU); sum(for i in allDat do avg((select Lagerbestand)[myStartdate <= Datum and Datum <= myEnddate and SKU = i].PFOWN) end)
Content aside
- vor 1 JahrZuletzt aktiv
- 19Antworten
- 135Ansichten
-
2
Folge bereits