如何创建oracle视图是动态的?

时间:2015-11-09 02:36:26

标签: sql oracle dynamic view

create or replace view as
(select emp,department,salary
   from employee
   where partition_key = to_char(add_months(sysdate,-2) 'yyyymm'));

我有这个观点,我在每个月的第5天从员工表中得到数据前2个月。

如何使用相同的视图从每个月的第10天获取上个月的数据。

create or replace view as
(select emp,department,salary
   from employee
   where partition_key = to_char(add_months(sysdate,-1) 'yyyymm'));

修改

来自评论:

基本上,在一个月的前10天,我希望看到数据前2个月和第10个晚上,我想查看上个月的数据。

2 个答案:

答案 0 :(得分:1)

根据您的更新要求,以下内容似乎可以实现您的目标:

create or replace view as
  select emp, department, salary
    from employee
    where partition_key =
            to_char(add_months(sysdate,
                               CASE
                                 WHEN TO_NUMBER(TRIM(TO_CHAR(SYSDATE, 'DD'))) <= 10
                                   THEN -2
                                 ELSE -1
                               END), 'yyyymm');

祝你好运。

答案 1 :(得分:0)

您似乎可以从当前日期减去10天......

create or replace view blah
as
select
  emp,
  department,
  salary
from
  employee
where
  partition_key = to_char(add_months(trunc(sysdate-10,'mm'),-1) 'yyyymm'));