有表T_GDXMGD_GUID,XZQ_DM,GY_FS,GD_MJ,JE
表: T_XZQ XZQ_GUID,XZQ_DM,XZQ_MC 
现在要从表T_GDXM表中取出每个行政区JE前10个的数据,sql语句如何实现的呢?

解决方案 »

  1.   


    SELECT GD_GUID,XZQ_DM,GY_FS,GD_MJ,JE
    FROM (select GD_GUID,XZQ_DM,GY_FS,GD_MJ,JE,row_number() over (order by JE) rn
          from T_GDXM)
    WHERE RN<=10
      

  2.   

    --假设你的行政区是按照XZQ_GUID划分,并且按照je升序(order by m.je),如果是降序.(order by m.je desc)
    select t.* from
    (
    select m.* , n.XZQ_MC , row_number() over(partition by m.GD_GUID order by m.je) rownum 
    from T_GDXM m, T_XZQ n
    where m.XZQ_GUID = n.XZQ_GUID
    ) t
    where rownum <= 10
    --假设你的行政区是按照XZQ_GUID,XZQ_DM划分,并且按照je升序,如果是降序.(order by m.je desc)
    select t.* from
    (
    select m.* , n.XZQ_MC , row_number() over(partition by m.GD_GUID,m.XZQ_DM order by m.je) rownum 
    from T_GDXM m, T_XZQ n
    where m.XZQ_GUID = n.XZQ_GUID and m.XZQ_DM = n.XZQ_DM
    ) t
    where rownum <= 10
      

  3.   

    问题没描述清楚不过应该分析函数可以解决你的问题 row_number() over(partition by ..... order by .. )