需要一行SQL语句将数据从一个表复制到另一个表

时间:2013-11-01 02:36:11

标签: sql oracle

现在源表(T1)的数据和结构如下所示:

NAME                    RECORD_NUMBER       APPROVERS                   AREA                        
MS COORDINATOR 1123     1                   EMEA_ARMSTROA               c                           
MS COORDINATOR 1123     3                   AMERICAS_SIMSS              c                           
MS COORDINATOR 1123     4                   ASIAPACIFIC_KUMSANGA        c                           
MS COORDINATOR 1123     5                   ASIAPACIFIC_MSAGE           c                           
MS COORDINATOR 1123     7                   ASIAPACIFIC_MSAGE           c   

然后我想将上表中的数据复制到新表(T2)并删除重复的行并删除record_number空白并按字母顺序排序批准者并重置record_number的值,因此应该查看目标表中的数据像这样:

NAME                    RECORD_NUMBER       APPROVERS                   AREA                        
MS COORDINATOR 1123     1                   AMERICAS_SIMSS              c                            
MS COORDINATOR 1123     2                   ASIAPACIFIC_KUMSANGA        c 
MS COORDINATOR 1123     3                   ASIAPACIFIC_MSAGE           c 
MS COORDINATOR 1123     4                   EMEA_ARMSTROA               c     

那么,任何人都可以给我一个单行的sql解决方案吗? T2表的主键是(name,record_number,area)

1 个答案:

答案 0 :(得分:2)

使用ROWNUM生成record_number列。

试试这个:

INSERT INTO t2
   SELECT name,
          ROWNUM AS record_number,
          approvers,
          area
     FROM ( SELECT DISTINCT name, approvers, area
               FROM t1
           ORDER BY approvers ) x