我需要根据特定条件增加列值。在Oracle中增加列值
我有2个表 -
表A的ID,姓名,日期,等等
Id Name Date
1 ABC 3/1/2014
2 ABC 4/1/2014
3 ABC 5/1/2014
4 DEF 4/1/2014
5 DEF 5/1/2014
6 HIJ 1/1/2014
7 HIJ 2/1/2014
8 HIJ 3/1/2014
9 HIJ 4/1/2014
10 HIJ 5/1/2014
表B有名称(外键),日期(将同表A) ,柜台等。
Name Date Counter(the value that I need is in this column, it will be zero by default)
ABC 3/1/2014 0
ABC 4/1/2014 1
ABC 5/1/2014 2
DEF 4/1/2014 0
DEF 5/1/2014 1
HIJ 1/1/2014 0
HIJ 2/1/2014 1
HIJ 3/1/2014 2
HIJ 4/1/2014 3
HIJ 5/1/2014 4
我需要增加计数器,如上表所示。因此,对于每个名称计数器应该重置,并从0开始,每个名称的日期将会不同,所以我需要考虑这一点(意思是我不能假设所有名称都为1/31/2014为0)将结束在说5/1/2014。所以我需要更新计数器,直到日期已达到5/1/2014。
什么是最好的方法来实现这一目标?我想写一个过程,但不知道我怎么可以更新的游标不同的名字在柜台上。我愿意接受任何建议。谢谢。
编辑:::更新的代码
Update Table B, set counter = 0;
declare
cursor rec is
select a.name, a.postingdate, b.counter
from table A a
inner join table B b
on a.name = b.name
order by a.name, a.date;
begin
open rec;
LOOP
fetch rec into v_name, v_date, v_counter;
exit...........
**<How can I reset my counter here for different names>**
if date < to_date ('01-may-2014', 'dd-mon-yy') then v_counter := v_counter +1;
end if;
update table b set counter = v_counter where current of rec;
END LOOP;
commit;
END;
显示一些代码。即使它是越野车或丑陋或其他。你必须展示一些代码,否则你似乎在寻求别人去做你的工作。 – alkis 2015-02-17 20:15:45
够公平的。我已经更新了上面的代码。 – user115391 2015-02-17 20:36:02