Rozbijanie zasobów magazynowych dla kolejnych zleceń - SQL

1

Witam,
Potrzebuję jakiegoś prostego selecta który będzie rozbijał mi stan magazynowy dla kolejnych zleceń, chciałbym uzyskać taki wynik jak poniżej.

image

2

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.

0

Wrzuć dane na https://www.db-fiddle.com i daj linka

0

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?

0
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.Tabela2.jpg

1
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 selecta

select 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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.