Страница 1 из 1

Просмотр сальдовых и текущих остатков

Добавлено: 18 июл 2014, 13:05
Olegpro
Добрый день!

Мне необходимо написать запрос в PL/SQL Developer с целью получить список МЦ, у которых есть сальдовые \ текущие остатки. Каким образом мне это сделать? Не совсем понимаю структуру таблицы saldomc. Чтобы получить список МЦ, у которых есть сальдовые остатки, необходимо добавлять условие на дату (текущую дату dsaldo) или смотреть последнюю по дате строку таблицы и сравнивать количество с нулем?

Заранее спасибо за помощь.

Re: Просмотр сальдовых и текущих остатков

Добавлено: 18 июл 2014, 13:34
Den
http://tyumbit.ru/gal_forum/viewtopic.p ... 8&start=30

имхо, оптимально через OVER - аналитическую. Она в PLSQL вроде тоже есть. Я по линку приводил пример для TSQL

Re: Просмотр сальдовых и текущих остатков

Добавлено: 18 июл 2014, 13:47
Olegpro
Я не очень понимаю саму логику. Вопрос о скорости пока не стоит. Каким образом мне посмотреть сальдовые остатки на текущую дату? Для этого надо для каждой МЦ находить последнюю по дате и времени запись в saldomc и чтобы количество остатков было не равно нулю? Или я ошибаюсь?

Re: Просмотр сальдовых и текущих остатков

Добавлено: 18 июл 2014, 13:50
Den
вроде того..
+ учитывать нужно что остатки лежат saldomc на разрез мц+подр+мол+партия

Re: Просмотр сальдовых и текущих остатков

Добавлено: 18 июл 2014, 13:55
Olegpro
Тогда каким образом мне найти последнюю по времени запись в таблице для каждой мц? И как учесть этот "разрез"? На что он влияет в случае, когда мне надо получить список МЦ, у которых есть остатки вне зависимости от мола-склада и т.д.?

Re: Просмотр сальдовых и текущих остатков

Добавлено: 18 июл 2014, 15:22
Den
не совсем понятно что не понятно.
dsaldo - дата остатков
CMC-CPODR-CMOL-CPARTY разрез

получаете на последнюю даты разрезы ненулевые по KOL, далее группируйте как Вам нужно

Re: Просмотр сальдовых и текущих остатков

Добавлено: 18 июл 2014, 15:40
Olegpro
Объясню на примере.

Для условного МЦ в таблице saldomc есть n строк с разными датами и кол-вом:

строка 1 - cmc 1, dsaldo 1, kol 1, ...
строка 2 - cmc 1, dsaldo 2, kol 2, ...
строка 3 - cmc 1, dsaldo 3, kol 3, ...
строка 4 - cmc 1, dsaldo 4, kol 4, ...
... и т.д.

Как мне в запросе выбрать строку с последними датой-временем (например, это строка 4, в которой dsaldo 4 > dsaldo (с 1 по n, где n - кол-во строк в таблице saldomc для данной МЦ)), чтобы сравнить по kol с нулем? Возможно вопрос глупый, но опыта в установке таких условий в запросах PLSQL у меня мало.

Т.е. запрос должен выбрать из всех строк для каждой МЦ последнюю по времени. Если я правильно понимаю структуру saldomc.
Den писал(а):не совсем понятно что не понятно.
dsaldo - дата остатков
CMC-CPODR-CMOL-CPARTY разрез

получаете на последнюю даты разрезы ненулевые по KOL, далее группируйте как Вам нужно

Re: Просмотр сальдовых и текущих остатков

Добавлено: 18 июл 2014, 15:43
Den
Ой, это Вам быстрее всего тогда куда то сюда :
http://www.sql.ru/forum/oracle

Тут не совсем форум по Оракловому SQL все же

Re: Просмотр сальдовых и текущих остатков

Добавлено: 18 июл 2014, 16:17
m0p3e
Как-то так:

Код: Выделить всё

select saldomc.fnrec from gal.saldomc where saldomc.fdsaldo = (select max(saldomc_last.fdsaldo) from gal.saldomc saldomc_last where saldomc_last.fcmc = saldomc.fcmc );
Это общий случай для оракла.

Re: Просмотр сальдовых и текущих остатков

Добавлено: 18 июл 2014, 17:42
Olegpro
Спасибо. То, что нужно!
m0p3e писал(а):Как-то так:

Код: Выделить всё

select saldomc.fnrec from gal.saldomc where saldomc.fdsaldo = (select max(saldomc_last.fdsaldo) from gal.saldomc saldomc_last where saldomc_last.fcmc = saldomc.fcmc );
Это общий случай для оракла.