有一张表A里有这样几个字段:serv_id,acct_id,charge,state_date,serial_nbr,state,我想得到这样一个结果,按照serv_id,acct_id进行分组,然后求sum(charge),以及max(state_date)对应的serial_nbr和state,也就是说假设表里面有如下两条数据serv_id   acct_id    charge    state_date   serial_nbr   state
1          1          2        2006-5-17    123          2C
1          1          3        2006-5-18    11           2D我希望得到这样一条记录
serv_id   acct_id    sum(charge)   serial_nbr    state
1         1          5             11            2D   
其中serial_nbr和state都是取2006-5-18(max(state_date))这条记录的值。  请问大家该如何写呢?谢谢!

解决方案 »

  1.   

    select distinct serv_id ,acct_id,
           sum(charge) over(partition by serv_id ,acct_id) sum_charge,
           first_value(serial_nbr) over(partition by serv_id ,acct_id order by state_date desc) serial_nbr,
           first_value(state) over(partition by serv_id ,acct_id order by state_date desc) state
    from a
      

  2.   

    谢谢!能否用group by子句呀, first_value,partition by 是不是都是oracle的关键字?如果是的话,移植到其他数据库还得改。