表A有如下数据
用户   报销次数
1005   3
1002   2
1004   2
1001   1
1003   1表B有如下数据
用户   报销金额
1001   100
1002   90
1002   110
1003   100
1004   80
1004   90
1005   100
1005   120
1005   130现在表B是按照用户列数字递增排序,环境是oracle9i,请教如何使得表B的用户列按照表A的用户列的顺序排序?
(数据量非常大,取5个用户例子)
如:
1005   100
1005   120
1005   130
1002   90
1002   110
1004   80
1004   90
1001   100
1003   100

解决方案 »

  1.   


    declare @表A table (用户 int,报销次数 int)
    insert into @表A
    select 1005,3 union all
    select 1002,2 union all
    select 1004,2 union all
    select 1001,1 union all
    select 1003,1declare @表B table (用户 int,报销金额 int)
    insert into @表B
    select 1001,100 union all
    select 1002,90 union all
    select 1002,110 union all
    select 1003,100 union all
    select 1004,80 union all
    select 1004,90 union all
    select 1005,100 union all
    select 1005,120 union all
    select 1005,130select b.* from @表B b 
    left join 
    (select row_number() over 
    (order by 报销次数 desc,用户) as rownum,* from @表A) a
    on b.用户=a.用户
    order by a.rownum,b.报销金额/*
    用户          报销金额
    ----------- -----------
    1005        100
    1005        120
    1005        130
    1002        90
    1002        110
    1004        80
    1004        90
    1001        100
    1003        100
    */
      

  2.   

    多谢回复。
    不过如果在oracle环境中,语句该怎么写呢?
    新手刚接触数据库不久