2014-10-01 8 views
0

SQL에 두 개의 테이블이 있습니다. 각 테이블에 12 열과 16 열이 있습니다.이 중 4 개는 모두 공통입니다.한 테이블의 특정 열 값을 다른 테이블의 특정 열에 삽입하십시오.

내가 필요한 것은 한 테이블의 4 개 열의 값을 다른 테이블의 열에 삽입하기를 원한다는 것입니다.

INSERT INTO TABLE2 (IDCOMPANY, 
       IDPLANT, 
       IDTRAINING, 
       IDEMPLOYEE, 
       IDGRADE, 
       IDDEPARTMENT, 
       IDDESIGNATION, 
       EMAIL, 
       STATUS, 
       CREATEDBY, 
       CREATEDON) 
     VALUES (@IDCOMPANY, 
       @IDPLANT, 
       @IDTRAINING, 
       @IDEMPLOYEE, 
     (SELECT IDGRADE, 
     IDDEPARTMENT, 
     IDDESIGNATION, 
     EMPLOYEE_EMAIL 
     FROM TABLE1 
     WHERE [email protected]) , 
       @STATUS, 
       @CREATEDBY, 
       GETDATE()) 

다른 열 값이 내 응용 프로그램에서 매개 변수로 전달하지만, 네 개의 열 내가 다른 테이블에서 원하는 IDGRADE,IDDEPARTMENT,IDDESIGNATION,EMPLOYEE_EMAIL을 즉됩니다

나는 다음 시도했다.

이 작업을 수행 할 수 있습니까? 여기서 도움이 필요해.

업데이트 : 실행 다음과 같은 오류를 제공합니다 위의 쿼리

Msg 116, Level 16, State 1, Procedure USP_INSERT_HR, Line 219 
Only one expression can be specified in the select list when the subquery 
is not introduced with EXISTS. 
Msg 109, Level 15, State 1, Procedure USP_INSERT_HR, Line 217 
There are more columns in the INSERT statement than values specified in 
the VALUES clause. The number of values in the VALUES clause must match the 
number of columns specified in the INSERT statement. 

답변

0

귀하의 코드는이 구조를 가져야한다.

INSERT INTO TABLE2 
(IDCOMPANY,IDPLANT,IDTRAINING,IDEMPLOYEE,IDGRADE,IDDEPARTMENT,IDDESIGNATION,EMAIL,STATUS,CREATEDBY,CREATEDON) 

SELECT @IDCOMPANY,@IDPLANT,@IDTRAINING,@IDEMPLOYEE,IDGRADE,IDDEPARTMENT,IDDESIGNATION,EMPLOYEE_EMAIL,@STATUS,@CREATEDBY,GETDATE()) 
FROM TABLE1 WHERE [email protected] 
0

EDIT - 이제 질문이 많이 개선되었으므로 다음을 시도하십시오 (문제없이 선택 내에서 변수를 사용할 수 있음). 삽입 부분에서 11 열이 현재 값 11 열과 일치해야 - 6 @ 제공자 GETDATE()

INSERT INTO TABLE2 (IDCOMPANY, IDPLANT, IDTRAINING, IDEMPLOYEE, IDGRADE, IDDEPARTMENT, 
        IDDESIGNATION, EMAIL, STATUS, CREATEDBY, CREATEDON) 
    SELECT @IDCOMPANY, @IDPLANT, @IDTRAINING, @IDEMPLOYEE, 
      IDGRADE, IDDEPARTMENT, IDDESIGNATION, EMPLOYEE_EMAIL, 
      @STATUS, @CREATEDBY, GETDATE() 
    FROM TABLE1 
    WHERE [email protected] 

에서 TABLE1 1로부터 SELECT 의해 제공되는 변수, 4 --- --- END의 EDIT

INSERT는 새로운 행을 추가하며 table1의 4 개 열의 값을 table2에 레코드의 동일한 명명 된 열에 추가하기를 원하는지 (약간만 모호하기는하지만 너무 추측하기는하지만) 나타납니다. 그 이미 존재합니다.

위의 내용이 참인 경우 업데이트 (INSERT가 아님)를 사용해야합니다. 아래와 비슷한 것이 작업에 가까워 야합니다.

UPDATE TABLE2 AS T2 
SET T2.IDCOMPANY = T1.IDCOMPANY, T2.IDPLANT = T1.IDPLANT, T2.IDTRAINING = T1.IDTTRAINING, 
T2.IDEMPLOYEE = T1.IDEMPLOYEE 
FROM TABLE2 JoinTbl 
INNER JOIN TABLE1 AS T1 
ON JoinTbl.EMPLOYEECODE = T1.EMPLOYEECODE