[ОТВЕТИТЬ]
Опции темы
14.10.2007 13:54  
Vovantus
Здравствуйте. Помогите, пожалуйста, с запросом.. нужно определить, какие документы были изменены за определённый период. Например, нужно увидеть, какие документы редактировались за прошлый месяц. В связи с тем, что я на текущий момент вообще не шарю в запросах, прошу не ругаться громко, т.к. могу позадовать глупые вопросы
 
15.10.2007 06:33  
akonev
Цитата:
Сообщение от Vovantus
нужно определить, какие документы были изменены за определённый период. Например, нужно увидеть, какие документы редактировались за прошлый месяц.
насколько я понимаю, ни разу не принимавшиеся черновики должны быть неинтересны. они на то и черновики, чтобы их редактировать.
если так - то самое простое, это прорыть журнал документов.
потому как для редактирования надо сначала статус опустить.
Код:
select * from smdoclog t
where (t.oldstate=2 and t.newstate=1) or (t.oldstate=3 and t.newstate=2)
это мы нашли все документы у которых статус менялся от принят в количестве до черновика и от принят полностью до принят в количестве.
дальше надо добавлять условия по датам, типам документов, потом связывать с таблицей документов и добавлять условия по местам хранения.
наращивай поэтапно :)

PS вопрос явно имеет специфику не оракла вообще, а супермага. надо было в другой раздел его пихать.
 
15.10.2007 06:55  
Vovantus
Цитата:
Сообщение от Andrew_Konev
это мы нашли все документы у которых статус менялся от принят в количестве до черновика и от принят полностью до принят в количестве.
дальше надо добавлять условия по датам, типам документов, потом связывать с таблицей документов и добавлять условия по местам хранения.
наращивай поэтапно :)
вот сижу и думаю, ну получу я документы которые менялись, а что в итоге? Наверное, не правильно определил задачу.. Смысл в том, что я хочу видеть какие документы (ВЛИЯЮЩИЕ НА ОСТАТКИ) менялись задним числом! Например, создана НП от 1.01.2007. Сегодня уже 15 число 10 месяца, как определить, менял ли кто-нить статус документа за это период.. Блин, не могу объяснить что треюуется более понятным языком, но, надеюсь мысль понятна..
 
15.10.2007 07:17  
akonev
вот и добавляй условий!
то же самое (понижение статуса до черновика), но берем только приходные, расходные и перемещения;
документы старше трех месяцев; откатили в последний месяц:
Код:
select t.eventtime, d.createdat, t.doctype, t.id, t.username, t.oldstate, t.newstate 
from smdoclog t, smdocuments d
where (t.oldstate=2 and t.newstate=1)
  and (t.doctype='WI' or t.doctype='WO' or t.doctype='IW')
  and t.eventtime>add_months((sysdate),-1)
  and t.doctype=d.doctype and t.id=d.id
  and d.createdat<add_months((sysdate),-3);
все. кроме них остатки меняют только кассовые документы.
если хочешь - тоже добавь. типы CS и CR.
периоды сам подбирай под свои задачи.
 
19.10.2007 07:11  
Vovantus
скрипт готов и протестирован, спасибо Андрею Коневу

итак, чтобы отследить документы (ПН, РН, НП), у которых статус менялся с проведённого до чернового, нуна зделать такой запрос:

Код:
select t.eventtime, d.createdat, t.doctype, t.id, t.username, t.oldstate, t.newstate 
from smdoclog t, smdocuments d
where (t.oldstate=2 and t.newstate=1)
  and (t.doctype='WI' or t.doctype='WO' or t.doctype='IW')
  and t.eventtime>((sysdate)-7)
  and t.doctype=d.doctype and t.id=d.id
  and d.createdat>((sysdate)-365);
В течении 7 прошедших дней , включая текущий, производилась смена статуса в документах, созданных за последний год.

ещё один запрос до кучи. Показывает удалённые документы за определённый период:

Код:
select t.eventtime, t.doctype, t.id, t.username, t.oldstate, t.newstate 
from smdoclog t
where (t.oldstate=1 and t.newstate=-1)
and (t.doctype='WI' or t.doctype='WO' or t.doctype='IW')
and t.eventtime>((sysdate)-7);
 
 
Опции темы



Часовой пояс GMT +3, время: 13:10.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.