Автоматически передать параметры в функцию oracle plsql - PullRequest
1 голос
/ 31 января 2012

Я написал два plsql functions для сравнения запасов и продаж.один как find_prodcuts_sold, а другой как find_usage_from_stock.

Я могу получить разницу между товаром и продажами, уменьшив функцию find_prodcuts_sold от функции find_usage_from_stock.для этого я должен передать From date и To date этим двум функциям.(From date и To date взяты из столбца stock_date в таблице stock).тогда мои функции возвращают значения для заданного диапазона дат.

Теперь я хочу создать line chart, используя мои функции, чтобы получить различия между запасом и рабами.График должен строить автоматически.без пароля пользователя From date и To date.

Пример stock_date столбец из stock table.

stock_date

30-JAN-12
26-JAN-12
24-JAN-12
23-JAN-12
18-JAN-12
15-JAN-12
13-JAN-12
12-JAN-12
11-JAN-12
08-JAN-12
06-JAN-12

Я хочу автоматически передать указанные выше даты, как показано ниже.

From        To
26-JAN-12   30-JAN-12
24-JAN-12   26-JAN-12
23-JAN-12   24-JAN-12
18-JAN-12   23-JAN-12
15-JAN-12   18-JAN-12
13-JAN-12   15-JAN-12
12-JAN-12   13-JAN-12
11-JAN-12   12-JAN-12
08-JAN-12   11-JAN-12
06-JAN-12   08-JAN-12

как я могу это сделать?

1 Ответ

2 голосов
/ 31 января 2012

Вы можете использовать LAG или LEAD аналитические функции:

select stock_date, lead(stock_date, 1, null) over (order by stock_date) next_date
from stock_table

, а затем использовать результат запроса для ввода, то есть:

SELECT find_usage_from_stock(t.product_id, t.start_date, t.end_date) as usage_from_stock, 
       find_prodcuts_sold(t.product_id, t.start_date, t.end_date) as prodcuts_sold, 
       t.product_id, t.start_date
FROM (select stock_date as start_date, 
             lead(stock_date, 1, null) over (order by stock_date) as end_date, 
             product_id
      from stock_table) t

Примечание: я использовал ноль в качестве пустого значения в функции отведения, возможно, вам нужно будет добавить что-то еще

...