[MSSQL] Przypisanie numeru dostawy do sprzedaży FIFO

Odpowiedz Nowy wątek
2018-12-13 15:02
0

Drodzy forumowicze, dysponuję tabelą z danymi jak poniżej:

ID Data Nr dok Ilość KOLUMNA DODANA Z NR DOSTAWY
1 2018-11-23 Dostawa1 100 null
2 2018-11-25 Sprzedaz1 -40 Dostawa1
3 2018-12-01 Dostawa2 200 null
4 2018-12-05 Sprzedaz3 -30 Dostawa1
5 2018-12-10 Sprzedaz4 -30 Dostawa1
6 2018-12-10 Sprzedaz4 -200 Dostawa2

Chciałbym dodać kolumnę, która przypisuje nr dostawy jak w powyższej tabeli wg FIFO (w przypadku sprzedaży towaru z dwóch dostaw chciałbym rozbić sprzedaż na dwa wiersze).

Czy znajdzie się ktoś kto podoła wyzwaniu ?

Z góry dziękuję PapaJapa

Pozostało 580 znaków

2018-12-13 15:50
0

Serio? [MS SQL] fifo, stocki, sprzedaz, zakup

Proszę, chociaż mała wskazówka ? :) Rozpisuję sobie elegancko kolumny z total wejściem, total zejściem, ale nie wiem jak logicznie wybrnąć, aby przypisywał najstarszą dostawę :( - PapaJapa 2018-12-17 12:25

Pozostało 580 znaków

2018-12-13 15:54
0

No właśnie nie mogę sobie poradzić z przypisaniem dostawy... Próbowałem znaleźć analogię, ale chyba jestem jeszcze za cienki... W tamtym problemie do listy stockowej doklejaliśmy pozostałe ilości i w miarę to kumam, ale żeby wybrać ostatnią dostawę mającą "wolne" sztuki i przypisać ją do linii to trochę magia :(

Pozostało 580 znaków

2018-12-17 15:34
0

Zrobiłem coś takiego, ale mam kłopot z rozbiciem sprzedaży na dwie dostawy.

http://sqlfiddle.com/#!15/c0228/6/0

Proszę o wsparcie

Dzięki

Pozostało 580 znaków

2018-12-17 15:46
0

Pokaż, co chcesz w wyniku. Dokładny wynik na tych danych.

Pozostało 580 znaków

2018-12-17 16:01
0

Mam dane w formie id,data_doc,numer_doc i ilość. Chcę do transakcji sprzedaży przypisać datę z numerem dostawy wg fifo. Tutaj akurat liczby spinają się 1=1, ale może zdarzyć się tak, że sprzedaż odbywa się z ilości składającej się z dwóch dostaw i nie wiem jak pokierować sql`em tak, aby rozbił sprzedaż na dwa wiersze przypisując dwie dostawy.

id data_doc numer_doc ilosc data dostawy numer dostawy
1 2018-11-23 dostawa1 100 - -
2 2018-11-25 sprzedaz1 -40 2018-11-23 dostawa1
3 2018-12-01 dostawa1 200 - -
4 2018-12-05 sprzedaz2 -30 2018-11-23 dostawa1
5 2018-12-10 sprzedaz3 -30 2018-11-23 dostawa1
6 2018-12-10 sprzedaz4 -200 2018-12-01 dostawa2

Pozostało 580 znaków

2018-12-19 11:10
0

A jednak nie jest to takie proste... :(

Pozostało 580 znaków

2018-12-19 22:27
0

Połowę masz gotową. Nad drugą sam pomyśl...
http://sqlfiddle.com/#!15/342aa/7

No nie ma połowy ;) Dla drobnej zmiany http://sqlfiddle.com/#!15/d3516/1 bierzesz za mało z pierwszej dostawy - Panczo 2018-12-20 12:28
Bo to powinien sobie rozbijać w momencie wpisywania do bazy. Potraktować to jak "serie", czyli nie można wydać z danej serii więcej niż się ma (ten sam produkt, ale jakby inny). A co jeśli będzie miał 5 dostaw po 100, i jedną sprzedaż na 500? Też rozbijac na 5 rekordów TAKIM zapytaniem? To jest głupie... - Marcin.Miga 2018-12-20 12:41
Samo robienie FIFO na bazie jest bez sensu, pomijając już kwestie jak rozbijanie na dostawy czy ewentualność stanów ujemnych to działamy na próbce danych, wydajnościowo można zabić bazę przy dużym magazynie. Nie znam systemu który liczy to w locie... - Panczo 2018-12-20 13:05

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0