2017-02-14 9 views
2

Ok ... 둘러 본 결과 내 특정 문제를 해결하는 데 도움이되는 내용을 찾지 못했습니다. 내가 새로 만든 열로 기존 테이블 (table2)로 (table1)을 이동하려고하는 내용의 테이블이 있습니다. 표 :SQL/SSMS - 두 조건이있는 한 테이블에서 다른 테이블로 부분 데이터 이동

CNTC_COMM_TYP_ID CNTC_COMM_VAL CNTC_ID COMM_TYP_ID 
14     406-444-1104  4  1 
15     406-443-2127  4  4 
16     [email protected]  4  3 
17     406-338-2181  16  1 
18     406-338-7127  16  4 

표 2 :

CNTC_ID CNTC_NM  ST_ENTY_ID TRBL_ID WorkPhone CellPhone Email Fax 
1  Poole, Andy  10  NULL NULL   NULL NULL NULL 
2  Goodwin, Annie NULL  5 NULL   NULL NULL NULL 

I 해당 열에 값 분리된다에 문제가 발생하고 문제.

WHERE table1.CNTC_ID = table2.CNTC_ID 

과 : 내가 찾고 같은 것입니다 내가 언제 SQL에서 함께 CASE를 넣어 시도했습니다

IF (GAIN_CNTC_COMM_TYP.CNTC_TYP_ID= 1) { 
    SET WorkPhone = table1.CNTC_COMM_VAL 
} 
ELSE IF (table1.CNTC_TYP_ID= 2) { 
    SET CellPhone = table1.CNTC_COMM_VAL 
} 
ELSE IF (table1.CNTC_TYP_ID= 3) { 
    SET Email = table1.CNTC_COMM_VAL 
} 
ELSE IF (table1.CNTC_TYP_ID = 4) 
    SET Fax = GAIN_CNTC_COMM_TYP.CNTC_COMM_VAL 
} 

,하지만 난 사투를 벌인거야.

답변

2

Pivottable1의 데이터 후 그냥 궁금 table2

;with cte as 
(
select CNTC_ID, 
     WorkPhone=max(case when COMM_TYP_ID = 1 then CNTC_COMM_VAL end), 
     CellPhone=max(case when COMM_TYP_ID = 2 then CNTC_COMM_VAL end), 
     Email=max(case when COMM_TYP_ID = 3 then CNTC_COMM_VAL end), 
     Fax=max(case when COMM_TYP_ID = 4 then CNTC_COMM_VAL end) 
From Yourtable 
Group by CNTC_ID 
) 
UPDATE t2 
SET WorkPhone = c.WorkPhone, 
     CellPhone = c.CellPhone, 
     Email = c.Email, 
     Fax = c.Fax 
FROM table2 t2 
     JOIN cte c 
     ON t2.CNTC_ID = c.CNTC_ID 
+0

, 왜 CTE를 업데이트? 사례 진술을 업데이트에 넣지 않았습니까? 그렇지 않은 것이 가장 좋은 방법입니까? – manderson

+0

우리는 그 case 문을 set 절에 직접 추가 할 수 없습니다. cte 대신에 파생 테이블을 사용할 수는 있지만 .. 더 읽기가 편합니다. –

+0

방금 ​​직접 작성 했으므로 이제는 이해합니다. @Prdp 감사합니다. – manderson