嗨朋友我在sql server中有一点疑问如何处理目标表不匹配的记录替换为NA.please告诉mehow在sql server中解决这个问题。
表A:
id | Descr
1 |ab
2 |bc
3 |de
5 |
6 |jk
表B:
id | Descr
1 |
2 |
4 |
5 |
这里我想要更新tableB表描述来自TableA基于id列
我试过以下 合并TableB dest 使用TbleA雄鹿 在dest.id = stag.id上 当匹配时 更新
SET
dest.[id]= CASE WHEN coalesce(ltrim(rtrim(stag.[id])),'') = '' THEN 'NA' ELSE ltrim(rtrim(stag.[id])) END
,dest. [descr]= CASE WHEN coalesce(ltrim(rtrim(stag.[descr])),'') = '' THEN 'NA' ELSE ltrim(rtrim(stag.[descr])) END
我下面放了
表B:
id | Descr
1 | ab
2 | bc
4 |
5 | NA
但我想要输出如下 表B:
id | Descr
1 | ab
2 | bc
4 | NA
5 | NA
请告诉我如何处理sql server中的NA值
答案 0 :(得分:0)
您可以使用带有update语句的左连接,并将descr设置为NA,其中它是NULL。试试这个:
UPDATE dest
SET dest.descr =
CASE
WHEN coalesce(ltrim(rtrim(stag.[descr])),'') = '' THEN 'NA'
WHEN stag.[descr] IS NULL THEN 'NA'
ELSE ltrim(rtrim(stag.[descr]))
END
FROM TableB dest
LEFT JOIN TableA stag on dest.id = stag.id;
这是展示它的SQL Fiddle。