Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Помогите с вычислением!!!  [new]
Андрей312
Member

Откуда:
Сообщений: 6
Доброго времени суток!
Проблема в следующем:
имеется запрос, осуществляющий выборку из 2 таблиц (структура таблиц сильно упрощена для наглядности)
Таблица Товары(
id_ware - код товара
kol - количество заказанного товара
dat - дата заказа)

и таблица Остаток(
id_ware - код товара
ost - остаток на складе на текущую дату
)

текущий запрос выводит (привязка таблиц по id_ware):
---------------------------------------
| dat | id_ware | kol | ost |
---------------------------------------
| 1.1.2011 | 1 | 5 | 20 |
---------------------------------------
| 8.1.2011 | 1 | 9 | 20 |
---------------------------------------
| 1.1.2011 | 3 | 10 | 50 |
---------------------------------------
| 8.1.2011 | 3 | 4 | 50 |
---------------------------------------

Имеется необходимость получить результат, в котором значение остатка в запросе будет уменьшаться на величину предыдущего заказа, т.е. чтобы выводилось
---------------------------------------
| dat | id_ware | kol | ost |
---------------------------------------
| 1.1.2011 | 1 | 5 | 20 |
---------------------------------------
| 8.1.2011 | 1 | 9 | 15 |
---------------------------------------
| 1.1.2011 | 3 | 10 | 50 |
---------------------------------------
| 8.1.2011 | 3 | 4 | 40 |
---------------------------------------

Значение ost - во второй строке 15, т.к. предыдущий заказ этого товара был на 5 штук, след-но 20-5=15
При этом значение ost данного товара на текущую дату в базе по-прежнему 20. В общем, нужно чтоб значение ost менялось в запросе. Надеюсь что доступно изложил суть проблемы

Господа профессионалы, очень жду помощи, я в этом деле новичок, буду рад любому предложению
14 ноя 11, 17:43    [11595135]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с вычислением!!!  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Андрей312,

ost - nvl(sum(kol) over (partition by id_ware order by dat rows between unbounded preceding and 1 preceding), 0) ost
14 ноя 11, 17:46    [11595175]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с вычислением!!!  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
остаток - нарастающий итог kol партицированную по дате с сортировкой по какому нибудь полю.....
14 ноя 11, 17:47    [11595178]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с вычислением!!!  [new]
Андрей312
Member

Откуда:
Сообщений: 6
AmKad,
Спасибо, гении, не думал что здесь так быстро помогают нубам вроде меня)))))
всё замечательно работает
большущее спасибо откликнувшимся, тема закрыта
14 ноя 11, 17:52    [11595225]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить