|
Сложный вопрос
|
|||
---|---|---|---|
#18+
Доброе время суток! Бьюсь с такой задачей. Есть таблица остатков ost(xtov,kol) И есть таблица всех когда-либо поступлений: doc(xdoc,dat,xtov,kol2,sum) ORDER BY dat DESC Причём sum(kol2)>=sum(kol) Необходимо получить SELECT (xdoc,dat,xtov,kol,sum) чтобы количество совпадало с остатками. Т.е. срез последних kol штук по каждому товару. Иными словами, надо разбить остатки по последним поступлениям. Ума не приложу как это сделать оптимально. Подскажите, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 19:01 |
|
Сложный вопрос
|
|||
---|---|---|---|
#18+
Ну вроде разобрался как. Сначала добавил столбец в doc sum(kol) OVER(PARTITION BY doc.xtov ORDER BY dat DESC) kol2 это итого с начала таблицы по каждому товару отдельно. а затем оставил строки где kol2 меньше чем kol в ost В первой строке, где kol2 больше чем kol в ost - уменьшил пропорционально. Ну а остальные строки удалил. Но всё-равно интересны варианты других ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 19:58 |
|
|
start [/forum/topic.php?fid=53&fpage=18&tid=1994279]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 130ms |
0 / 0 |