在一个表中插入记录,从2个不同的表中获取记录

时间:2018-02-28 12:19:53

标签: sql db2

Hey Geeks我是DB2的新手我希望通过从一个表中获取最大值来生成代理,并且我正在这样做

SELECT    *
FROM      ( SELECT    EMP_NAME ,
                    EMP_ID ,
                    ( ROW_NUMBER() OVER ( ) ) g
          FROM      STG.EMPLOYEE AS A
                    LEFT JOIN PRD.INDIVIDUAL AS B ON A.EMP_ID = B.SRC_KEY
          WHERE     B.SRC_KEY IS NULL
        ) V
        CROSS JOIN ( SELECT ( COALESCE(MAX(INDVL_ID), 0) + 1 ) mm
                     FROM   PRD.INDIVIDUAL
                   ) B;

上述语句用于插入语句。 在上面的代码中,我希望从最后一行获得最大值。

(select EMP_NAME,EMP_ID,max(INDVL_ID)+(ROW_NUMBER() over())g) from 
 STG.EMPLOYEE)

愿你们得到它并提前感谢

示例数据在这里  第一个表数据

STG.EMPLOYEE
EMP_ID|EMP_NAME|  
     3|     def|
     4|     ghi|

我必须获得最大值的第二个表数据

PRD.INDIVIDUAL

INDVL_ID|INDVL_NAME|SRC_KEY|
       1|       abc|      1|

输出表

INDVL_ID|INDVL_NAME|SRC_KEY|
       2|       def|      3|
       3|       ghi|      4|    

1 个答案:

答案 0 :(得分:1)

以下是根据当前MAX值分配代理键值的示例

INSERT INTO PRD.INDIVIDUAL 
SELECT  ROW_NUMBER() OVER()   
        + (SELECT COALESCE(MAX(INDVL_ID),0) FROM PRD.INDIVIDUAL)  AS INDVL_ID
,       INDVL_NAME
,       SRC_KEY
FROM
    STG.EMPLOYEE