我现在要写一个存储过程,目的是根据卡积分,来查询表card_card内的数据,将积分前100名的提出来放到表card_reward内,同时保存操作时间在card_reward。谁知道怎么做,快告诉我!具体点!谢谢

解决方案 »

  1.   

    insert into card_reward(id,积分,......,时间)
    select id,积分,......,sysdate from 
    (select id,积分,......,row_number() over (order by 积分) as rn from card_card) 
    where rn<=100
      

  2.   

    上面的回答了
    如果需要有并列前100名
    就把row_number换成dense_rank
      

  3.   

    我是初学者,还是不太明白(select id,积分,......,row_number() over (order by 积分) as rn from card_card) 
    是什么意思,row_number我并没有定义啊,还有row_number() over (order by 积分) as rn不太明白,在帮帮我,告诉我一下
      

  4.   

    row_number()是个自动产生行号函数,随机产生,在select 语句里有多少行,就自动产生多少行
    row_number() over (order by 积分) 按"积分"排序产生行号
      

  5.   

    over()分析函数使用,请参考:
    http://www.cnblogs.com/liguiqing/archive/2007/11/20/966003.html
      

  6.   

    orcle的分析函数,很实用的。就是将card_card表的查询结果按积分排序,形成一列rn,然后只取前100列,也就是rn<=100