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

Откуда:
Сообщений: 44
StkDocs
Coddoc Numdoc FlagInOut State Datechange
Код документаНомер документаНаправленность: 0-расход 1-приход|Состояние: 0-черновик 1-Исполняется Дата изменения состояния


StkGds
CodDoc CodGd Qty Price
Код документа Код товара Количество Цена


StkAudit
CodDoc DateChange SummaDoc
Код документа Дата изменеия Сумма документа


1.Необходимо сформировать одним запросом, желательно без подзапросов, баланс по всем товарам с группировкой по каждому товару. Баланс есть (сумма прихода по товару) - (сумма расхода по товару) в денежном выражении.

2.Необходимо написать триггер, который при изменении состояния документа с состояния "черновик" на состояние "исполняется" будет заполнять служебную таблицу StkAudit и заносить в неё Код изменённого документа, Сумму всех товаров по нему, и Дату изменения состояния.

Заранее всем спасибо!
30 мар 11, 20:44    [10448364]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос и тригер! Пожалуйста  [new]
Elic
Member

Откуда:
Сообщений: 29976
Лабы надо делать самому
31 мар 11, 08:27    [10449243]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос и тригер! Пожалуйста  [new]
Eras
Member

Откуда: Вильнюс
Сообщений: 123
seejil,

1.
select g.codgd,
       sum(g.price * decode(d.flaginout, 0, -1, 1) * g.qty) balance
from stkdocs d,
     stkgds g
where d.coddoc = g.coddoc 
group by g.codgd

2.
create or replace trigger stkdocs_au
after insert or update
on stkdocs
for each row 
begin
   if :old.state = 0 and :new.state = 1 then
      insert into stkaudit(coddoc, 
                           datechange, 
                           summadoc)
      select :new.coddoc,
             sysdate,
             sum(g.price * g.qty)
      from stkgds g      
      where g.coddoc = :new.coddoc;
   end if;   
end;
31 мар 11, 08:48    [10449276]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос и тригер! Пожалуйста  [new]
Eras
Member

Откуда: Вильнюс
Сообщений: 123
Eras,

after insert or update => after update
31 мар 11, 08:51    [10449280]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос и тригер! Пожалуйста  [new]
seejil
Member

Откуда:
Сообщений: 44
Спасибо! Но уже как-то посидел подольше да сам разобрался.
1 апр 11, 08:43    [10454965]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить