【发布时间】:2020-02-25 09:22:20
【问题描述】:
我需要根据另一个表中的列数据长度更新表中的列。
表格:
SOURCE:
Item_Group Name
------------|-----------
1000 | Joe
1001 | Jill
1002 | Joanna
222222 | James
333333 | John
DESTINATION:
Item | Group | Person
------------|-----------|----
1000 | 000001 |
1001 | 000002 |
9998 | 222222 |
9999 | 333333 |
UPDATED DESTINATION:
Item | Group | Person
------------|-----------|----
1000 | 000001 | Joe
1001 | 000002 | Jill
9998 | 222222 | James
9999 | 333333 | John
更新应基于Item_Group 的数据长度。如果datalength为4则根据Item进行更新,如果datalength为6则根据Group进行更新。
我有两个单独的查询,我相信它们可以正常工作。
UPDATE table_dest
SET Person = a.Name
FROM table_source a, table_dest b
WHERE a.Item_Group = b.Item
AND DATALENGTH(a.Item_Group) = 4
GO
UPDATE table_dest
SET Person = a.Name
FROM table_source a, table_dest b
WHERE a.Item_Group = b.Group
AND DATALENGTH(a.Item_Group) = 6
GO
这是如何在单个查询中完成的?
【问题讨论】:
标签: sql sql-server switch-statement sql-update case