我在类型列
中有一组值types
ABC
EVAL
IBC
ABC
IBC
IBC
EVAL
我想从第一行循环并与下一个值进行比较,每次值不同时我想增加计数。例如,如果我将第一个值与第二个ABC = EVAL进行比较,因为它们是差异,我想增加计数。在下一轮中,我将第二行的值与第三行的值进行比较,即EVAL = IBC,再次因为它们是差异,我想增加计数。
我尝试使用游标,但我无法获得游标中的下一个列值。
答案 0 :(得分:3)
要访问排序结果中的下一行,您可以使用$('.identifierClass').hover(function(e) {
if(condition) // is true
{
$(element).attr("href", "url/goes/here").off().click(function(e) {
$(element).attr("target", "_blank");
});
}
});
函数:
您可以使用类似这样的内容作为光标的语句:
lead()
答案 1 :(得分:0)
如果您的用例不允许您使用带有lead()函数的单个查询,则可以执行此操作。
设置:
create table temp_tab(
t varchar(10),
last_change date
);
insert into temp_tab values ('ABC',sysdate);
insert into temp_tab values ('EVAL',sysdate);
insert into temp_tab values ('IBC',sysdate);
insert into temp_tab values ('ABC',sysdate);
insert into temp_tab values ('IBC',sysdate);
insert into temp_tab values ('IBC',sysdate);
insert into temp_tab values ('EVAL',sysdate);
循环并增加计数:
declare
counter number := 0;
prev_val varchar(10);
cursor getRecords is
select t
from temp_tab
order by last_change;
begin
-- loop through the cursor
for c in getRecords loop
dbms_output.put_line('c.t: ' || c.t);
-- if the cursor value is the same as the previous value increment the counter
if (prev_val = c.t) then
counter := counter + 1;
end if;
-- set the previous value equal to the current cursor value
prev_val := c.t;
end loop;
dbms_output.put_line('counter: ' || counter);
end;
你得到这样的输出:
c.t: ABC
c.t: EVAL
c.t: IBC
c.t: ABC
c.t: IBC
c.t: IBC
c.t: EVAL
counter: 1