我自己写了一个语句,不过弹出错误,大虾们帮看看
 select pv_time - lag(pv_time, 1, 0) over(order by PV_ID) pv_time
  from (select pv_id, PV_TIME
          from pv_tatistics t
         where to_date(t.pv_time, 'YYYY-MM-DD HH24:MI:SS') >=
               to_date('2011-06-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
           and to_date(t.pv_time, 'YYYY-MM-DD HH24:MI:SS') <=
               to_date('2011-06-01 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
         order by t.pv_ip, t.pv_time, t.pv_page)
 问题肯定出在第一行,不过我不清楚是否是因为pv_time列的格式之间的转换问题,
我的表结构是    PV_ID      PV_TIME
                30788      2000-06-11 18:29:00
                30791      2000-06-11 18:31:18
                30792      2000-06-15 22:12:21或者大家有什么更好的方法?   --- 我的目的是显示出相邻两行之间的PV_TIME的差值,我用的是orcale~

解决方案 »

  1.   

    补充下:上面的格式显示错了   PV_ID的那一列只有"30788,30791,30792"   而"2000-06-11"与"18:29:00"处于同一列
      

  2.   

     select pv_time - lag(pv_time, 1, 0) over(order by PV_ID) pv_time
      from (select pv_id, PV_TIME
      from pv_tatistics t
      where to_date(t.pv_time, 'YYYY-MM-DD HH24:MI:SS') >=
      to_date('2011-06-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
      and to_date(t.pv_time, 'YYYY-MM-DD HH24:MI:SS') <=
      to_date('2011-06-01 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
      order by t.pv_ip, t.pv_time, t.pv_page)如果没有取到前一项的值时,默认值的类型必须与pv_time类型一致,
    由于pv_time为日期型,所以默认值为0是不对的,指定一个日期类型值
    或者null。
      

  3.   

    tangren,谢谢,不过我把0换成了null还是会弹出错误~请问下具体应该在哪个地方?指定一个日期类型值
      

  4.   

    而且如果我把"1,0"换成"2,1",这样就是避免取不到值的现象了,不过提示 ORA-30484: missing window specification for this function错误....
      

  5.   

    改为:
    lag(pv_time, 1, null)
    如果有错误,贴出错误信息!!
      

  6.   

    改为null后,弹出的错误跟#4楼的错误一样~
      

  7.   

    额 不好意思 问题找到了,改为null后没有错误,我手误多改了下~
      

  8.   

    #7楼的回答你忽略下~~~改为null,弹出提示:ora-01722:invalid number