TABLEA
MasterCategoryID MasterCategoryDesc
1 Housing
1 Housing
1 Housing
2 Car
2 Car
2 Car
3 Shop
TABLEB
ID Description
1 Home
2 Home
3 Plane
4 Car
INSERT into TableA
(
[MasterCategoryID]
[MasterCategoryDesc]
)
Select
case when (Description) not in (select MasterCategoryDesc from TableA)
then (select max(MasterCategoryID)+1 from TableA)
else (select top 1 MasterCategoryID from TableA where MasterCategoryDesc = Description)
end as [MasterCategoryID]
,Description as MasterCategoryDesc
from TableB
我想使用 SQL/存储过程从 tableB 输入行到 tableA。例如,当插入第一行“Home”时,它在 MastercategoryDesc 中不存在,因此将在 MasterCategoryID 中插入“4”。第二行应在 MasterCategoryID 中再次保留“4”。下面的代码执行此操作,但是在第一行之后,所有行的 MastercategoryID 保持不变。我不知道如何在插入新行时跟踪 id。
ps 请不要回复说我需要使用 IDENTITY() 索引。我必须保持表结构相同并且不能更改它。谢谢