Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сложный вопрос / 2 сообщений из 2, страница 1 из 1
09.01.2021, 19:01
    #40034446
pakko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный вопрос
Доброе время суток!
Бьюсь с такой задачей.
Есть таблица остатков
ost(xtov,kol)
И есть таблица всех когда-либо поступлений:
doc(xdoc,dat,xtov,kol2,sum) ORDER BY dat DESC

Причём sum(kol2)>=sum(kol)
Необходимо получить SELECT (xdoc,dat,xtov,kol,sum)
чтобы количество совпадало с остатками. Т.е. срез последних kol штук по каждому товару.
Иными словами, надо разбить остатки по последним поступлениям.
Ума не приложу как это сделать оптимально.
Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
09.01.2021, 19:58
    #40034457
pakko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный вопрос
Ну вроде разобрался как.
Сначала добавил столбец в doc
sum(kol) OVER(PARTITION BY doc.xtov ORDER BY dat DESC) kol2
это итого с начала таблицы по каждому товару отдельно.
а затем оставил строки где kol2 меньше чем kol в ost
В первой строке, где kol2 больше чем kol в ost - уменьшил пропорционально.
Ну а остальные строки удалил.

Но всё-равно интересны варианты других
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сложный вопрос / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]