Witam,
Potrzebuję jakiegoś prostego selecta który będzie rozbijał mi stan magazynowy dla kolejnych zleceń, chciałbym uzyskać taki wynik jak poniżej.
Potrzebujesz do tego "running sum" (ew. "rolling sum" albo "running total"). Da się to łatwo zaimplementować, jeśli Twoja baza danych posiada window functions, np. PostgreSQL. Jeśli Twoja baza danych nie ma window functions, to musiałbyś stworzyć cursor.
Wrzuć dane na https://www.db-fiddle.com i daj linka
Masz jakieś kryteria dodatkowe? np. dla idtow=1, 10001,10002,10004,10005 można zrealizować całkowicie, a częściowo 10003 (25). Może warto doprecyzować te kryteria realizacji?
Riddle napisał(a):
Potrzebujesz do tego czegoś co się nazywa "running sum" (ew. "rolling sum" albo "running total"). Da się to łatwo zaimplementować, jeśli Twoja baza danych posiada window functions, np. PostgreSQL. Jeśli Twoja baza danych nie ma window functions, to musiałbyś stworzyć cursor.
Dzięki za wskazanie kierunku.
Rozwiązałem to za pomocą prostego selecta
select Zlecenie,idtow, iloscPotrzebna, sum(ilosPotrzebna) OVER (PARTITION BY idtow) ORDER BY Zlecenia) AS TotalIlosc
Dzięki czemu wyliczenia dla kolumn: "Można zrealizować","Braki","Pozostanie Po realizacji ","Status realizacji" nie jest problemem.
klaudio napisał(a):
Riddle napisał(a):
Potrzebujesz do tego czegoś co się nazywa "running sum" (ew. "rolling sum" albo "running total"). Da się to łatwo zaimplementować, jeśli Twoja baza danych posiada window functions, np. PostgreSQL. Jeśli Twoja baza danych nie ma window functions, to musiałbyś stworzyć cursor.
Dzięki za wskazanie kierunku.
Rozwiązałem to za pomocą prostego selectaselect Zlecenie,idtow, iloscPotrzebna, sum(ilosPotrzebna) OVER (PARTITION BY idtow) ORDER BY Zlecenia) AS TotalIlosc
No to to jest właśnie window function , Twoje sum()
razem z PARTITION BY
.