好的......我环顾四周,找不到任何可以帮助我解决具体问题的事情。我有一个内容表,我试图将(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,但我很挣扎。
答案 0 :(得分: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