powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Поссчитать sum() over (partition by ...) внутри формы
5 сообщений из 5, страница 1 из 1
Поссчитать sum() over (partition by ...) внутри формы
    #38946633
sum over
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, подскажите пожалуста.
Есть набор комплектующих(items), используемых в работах (jobs) для создания какого-либо предмета. Одна работа требует несколько разных комплектующих, и каждая комплектующая может использоваться в нескольких работах. Есть так же количество каждой комплектующей на складе. В форме нужно показать комплектующую, работу в которой она используется и сколько останется комплектующих после завершения каждой работы. Например:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
Компл.   Работа   На складе   В работу  Осталось
К1       Р1       50          5         45
К1       Р2       50          3         42
К1       Р3       50          7         35
К2       Р1       20          1         19
К2       Р2       20          2         17
К2       Р4       20          1         16
К3       Р5       10          2         8


В sql запросе я это нахожу через "на складе" -
Код: plsql
1.
2.
3.
select sum(sum("В работу")) over (partition by "комплектующая") 
from  .....
group by "работа", "комплектующая"


Сделал view и на его основании форму. Для представления всей информации работает нормально, при поиске по "комплектующей" тоже. А вот если искать по "работе" то выдает не те количества в "Осталось". Проверил в простом запросе - то же не правильно.
Т.е. если я делаю
Код: plsql
1.
2.
3.
select *
from my_view 
where "работа" = "Р1"

то Оракл сначала находит все строки которые приносит view и считает для них "Осталось", а потом уже фильтрует их по "работа".
Т.е. я получаю
Код: plsql
1.
2.
3.
Компл.   Работа   На складе   В работу  Осталось
К1       Р2       50          3         42
К2       Р2       20          2         17


вместо

Код: plsql
1.
2.
3.
Компл.   Работа   На складе   В работу  Осталось
К1       Р2       50          3         47
К2       Р2       20          2         18



Если убрать "осталось" из view, можно ли посчитать тоже самое в форме что бы поиск по обоим полям приносил правильные количества?
Заранее спасибо.
...
Рейтинг: 0 / 0
Поссчитать sum() over (partition by ...) внутри формы
    #38946706
Фотография mRdUKE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sum over,

Как всё запутано ..

Есть комплектующие, работы, кол-во на складе.. Выбирается "работа", для неё "комлектующие", указывается кол-во "в работу", считается "осталось", как разность (кол-во на складе - кол-во в работу)..

Структура таблиц/связи между ними, пример формы, имхо "вью" сделали не верно, если она нужна вообще?
...
Рейтинг: 0 / 0
Поссчитать sum() over (partition by ...) внутри формы
    #38946900
sum over
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При показе в форме всех данных или при поиске по комплектующим для каждой работы нужно показывать количество которое осталось с учетом предыдущих работ, т.е. если 5 работ требуют 25 деталей, а на складе есть только 10, то в последней работе нужно показать что есть нехватка -15 штук.
Грубо говоря - табулярная форма имеет 10 строк для показа и имеется 250 строк которые нужно показать со скроллингом.
Начиная со второй строки мне нужно знать число в предыдущей строке в той же колонке. Возможно такое?

П.С. Таблицы из Oracle ERP (items, jobs, operations), но сути это дело не меняет.
Спасибо.
...
Рейтинг: 0 / 0
Поссчитать sum() over (partition by ...) внутри формы
    #38948749
Фотография mRdUKE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sum overНачиная со второй строки мне нужно знать число в предыдущей строке в той же колонке. Возможно такое?
Возможно => go_record, first_record, last_record ..

sum overП.С. Таблицы из Oracle ERP (items, jobs, operations), но сути это дело не меняет.
Меняет, имхо "вью" Вы не правильно "сделали" ..
...
Рейтинг: 0 / 0
Поссчитать sum() over (partition by ...) внутри формы
    #38949957
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mRdUKEsum overНачиная со второй строки мне нужно знать число в предыдущей строке в той же колонке. Возможно такое?
Возможно => go_record, first_record, last_record ..

Не проще просто аналитикой (аналитические ф-ции LEAD, LAG) во view?
IMHO нефиг туда-сюда в forms'ах скакать
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Поссчитать sum() over (partition by ...) внутри формы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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