2

好的...我环顾四周,没有找到任何可以帮助我解决我的具体问题的东西。我有一个表,其中包含我试图将 (table1) 移动到现有表 (table2) 到新创建的列中的内容。表格1:

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                  ssands@foo.bar      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

我遇到的问题是将值分隔到适当的列中。我正在寻找的是这样的:

WHERE table1.CNTC_ID = table2.CNTC_ID

和:

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
}

我试过在 SQL 中组合一个 CASE WHEN,但我很挣扎。

4

1 回答 1

2

Pivot中的数据table1然后更新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 
于 2017-02-14T16:17:59.723 回答