求一条SQL语句车间工资表:
员工编号 工龄奖
零工表:  
员工编号 工龄奖
1001  20
1002  10
工序表:
员工编号 工龄奖
1001  21
1003  5
我想把零工表和工序表的对应员工编号的工龄奖汇总插入到车间工资表里,不知如何写? 

解决方案 »

  1.   

    insert into 车间工资表(员工编号,工龄奖)
    select 零工表.员工编号,零工表.工龄奖+工序表.工龄奖 as 工龄奖 where 零工表.员工编号=工序表.员工编号
      

  2.   

    INSERT INTO 车间工资表
          (员工编号, 工龄奖)
    SELECT 零工表.员工编号, 零工表.工龄奖 + 工序表.工龄奖 AS 工龄奖
    FROM 零工表 INNER JOIN
          工序表 ON 零工表.员工编号 = 工序表.员工编号
      

  3.   

    --具体LZ自行设置
    --车间工资表
    DECLARE @T3 TABLE(员工编号 INT,工龄奖 INT)
    --零工表
    DECLARE @T TABLE(员工编号 INT,工龄奖 INT)
    INSERT @T SELECT 1001,20
    UNION ALL SELECT 1002,10
    --工序表
    DECLARE @T1 TABLE(员工编号 INT,工龄奖 INT)
    INSERT @T1 SELECT 1001,21
    UNION ALL SELECT 1003,5
    --插入语句
    INSERT @T3(员工编号,工龄奖)
    SELECT 员工编号,SUM(工龄奖) AS 工龄奖
    FROM
    (
    SELECT * FROM @T
    UNION ALL 
    SELECT * FROM @T1) A
    GROUP BY 员工编号
    --------
    另一种方法用FULL JOIN
      

  4.   

    insert into 车间工资表
    select 员工编号,工龄奖
    from
    (select 员工编号,工龄奖 from 零工表 union all
     select 员工编号,工龄奖 from 功序表
    )
      

  5.   

    如果有重复,
    再DISTINCT试试
      

  6.   

    看能不能抢到1分INSERT @T3(员工编号,工龄奖)
    SELECT isnull(a.员工编号,b.员工编号) as 员工编号,isnull(a.工龄奖,0)+isnull(b.工龄奖,0) AS 工龄奖
    FROM 零工表 a 
    full join 工序表 b
    on a.员工编号=b.员工编号
      

  7.   

    insert 车间工资表(员工编号,工龄奖)
    SELECT isnull(a.员工编号,b.员工编号) as 员工编号,isnull(a.工龄奖,0)+isnull(b.工龄奖,0) AS 工龄奖
    FROM 零工表 a 
    full join 工序表 b
    on a.员工编号=b.员工编号
      

  8.   

    liangpei2008  的方案难道不行吗
    楼主没有测试过吗
      

  9.   

    不知道行不行.INSERT INTO 车间工资表
        SELECT 员工编号 AS 员工编号, SUM(工龄奖) AS 工龄奖 
            FROM
            (
                SELECT 员工编号, 工龄奖 FROM 零工表
                UNION ALL
                SELECT 员工编号, 工龄奖 FROM 功序表
            )
            GROUP BY 员工编号另外,如果 车间工资表 里已经有记录了,那么直接插入有可能会出现重名记录.