有张表 a
time ,库存
2011-9-1 , 1000
怎样根据这张表写个VIEW,得到 去年同期库存(就是2010年9月1号库存的量) 这个字段,效果如下 表b
time ,库存 ,去年同期库存
2011-9-1 , 1000 ,2000
time ,库存
2011-9-1 , 1000
怎样根据这张表写个VIEW,得到 去年同期库存(就是2010年9月1号库存的量) 这个字段,效果如下 表b
time ,库存 ,去年同期库存
2011-9-1 , 1000 ,2000
select trunc(a1.time,'DD') as time1, a1.库存 a2.库存
from a a1 left join a a2 on trunc(a1.time,'DD')=trunc(add_months(a2.time,12),'DD');
-- 前提:你的 time字段,是 date 类型的字段!
--假如time字段为varchar2型的,且格式为:yyyy-mm-dd
select a1.time,a1.库存,a2.库存
from a a1,a a2
where a1.time = to_char(add_months(to_date(a2.time),12),'yyyy-mm-dd')
我按照你的写了个view,可是一直报这错:duplicate column name 怎么回事呢
select trunc(a1.time,'DD') as time1,
a1.库存 as "今年库存",
a2.库存 as "去年库存"
from a a1 left join a a2 on trunc(a1.time,'DD')=trunc(add_months(a2.time,12),'DD');
select trunc(a1.time,'DD') as time1, a1.库存 as 今年库存, a2.库存 as 去年库存
from a a1 left join a a2 on trunc(a1.time,'DD')=trunc(add_months(a2.time,12),'DD');
-- 中间丢了一个逗号,
-- 哎,你一点应变能力也没有?一点纠错能力也没有?
scott@TBWORA> select emp.ename, emp.ename from emp;ENAME ENAME
-------------------- --------------------
SMITH SMITH
ALLEN ALLEN
WARD WARD
JONES JONES
MARTIN MARTIN
BLAKE BLAKE
CLARK CLARK
SCOTT SCOTT
KING KING
TURNER TURNER
ADAMS ADAMS
JAMES JAMES
FORD FORD
MILLER MILLER已选择14行。
create view emp_vi as select ename, ename from emp
*
第 1 行出现错误:
ORA-00957: 重复的列名-- 在创建视图的时候,列名必须唯一撒,猪!
-- 你看你的语句:
select trunc(t.time,'dd') as time1, t.kc, v.kc
...-- 这样:会生成两个名为 kc 的字段名,字段名重复,所以出错!