Table A事項J0A0HG7L 對應4個時間,如何得出第三個時間或第二個時間。     欄位1           欄位2                   欄位3
J0A0HG7L      44         2016/10/8 上午 02:35:54
J0A0HG7L      46        2016/10/9 上午 03:48:26
J0A0HG7L      49         2016/10/10 上午 03:18:53
J0A0HG7L      51         2016/10/11 上午 03:38:15如果想得出最后一筆時間和倒數第2筆的時間差大于30分鐘,求SQLPS: 第1個可以用min(欄位3),   最后1個可以用max(欄位3)求高手指點

解决方案 »

  1.   

    -- 使用 row_number ,得到順序號。
    -- rn = 1時,即為最後的數據,rn =2 時,即為倒數第二的數據
    -- 語法參考如下:
    select t.* , row_number(partition by 欄位1 order by 欄位3 desc) rn from t 
      

  2.   

    with tt as(
    select  t.欄位1,t.欄位3,t.欄位3,row_number() over(partition by t.欄位1order by t.欄位3 desc) rn from tab_name t)
    select from tt t1,tt t2
    where t1.欄位1=t2.欄位1 and t1.rn=1 and t1.rn=t2.rn-1
    and (t1.欄位3-t2.欄位3)>30/60/24
      

  3.   

    按照业务规则用row_number排序,根据需要取对应序号的记录
      

  4.   


    select nth_value(欄位3, 1) over(partition by 欄位1 order by 欄位2 desc) n1_val,--最后一筆時間
           nth_value(欄位3, 2) over(partition by 欄位1 order by 欄位2 desc) n2_val,--倒數第2筆時間
           a.*
      from tab a
      

  5.   

    马克 暂时没看到一楼写的sql..