select id,no,price,c_price,code,lead(code,1) over(partition by id order by no)
  ,case code when lead(code,1) over(partition by id order by no) 
             then price/lead(price,1) over(partition by id order by no)
      else c_price/lead(c_price,1) over(partition by id order by no) end
from test
order by id,no;

解决方案 »

  1.   

    我可能会利用rownum,双数的rownum是一个视图,奇数的rownum是一个视图。
    然后两个视图比较
      

  2.   

    不行就嵌套
    select ...,decode(...) from (
       select ...lead() ... ...
    )...;
      

  3.   

    但我現在想如果相鄰數據code相同的就用 price / price1 如果相鄰數據不同,則用 c_price / c_price 1 
    ----------------------------------------------
    根据你提供的数据,可以看出code相同时,price / price1和c_price / c_price 1的值相同,用price / price1和c_price / c_price 1都一样,而code不相同时,你用c_price / c_price 1,可见直接用c_price / c_price 1就可以了你的decode语句也写错了
    decode(price = price1,true,price,c_price)是不对的,你要比较code不是吗,应该是这样:
    decode(code ,code1,price,c_price)
      

  4.   

    decode 是不能识别布尔型的