我想在下面的表格中插入记录(带有示例数据的表格结构)。我必须使用TSQL来实现这个目标:
MasterCategoryID MasterCategoryDesc SubCategoryDesc SubCategoryID
1 Housing Elderly 4
1 Housing Adult 5
1 Housing Child 6
2 Car Engine 7
2 Car Engine 7
2 Car Window 8
3 Shop owner 9
例如,如果我使用MasterCategoryDesc
='Town'输入新记录,则会在MasterCategoryID
中将{4'插入相应的SubCategoryDesc + ID
。
我可以通过删除SubCategoryDesc和SubCategoryID列来简化这个问题。如何使用2列MasterCategoryID和MasterCategoryDesc
来实现此目的答案 0 :(得分:2)
INSERT into Table1
([MasterCategoryID], [MasterCategoryDesc], [SubCategoryDesc], [SubCategoryID])
select TOP 1
case when 'Town' not in (select [MasterCategoryDesc] from Table1)
then (select max([MasterCategoryID])+1 from Table1)
else (select [MasterCategoryID] from Table1 where [MasterCategoryDesc]='Town')
end as [MasterCategoryID]
,'Town' as [MasterCategoryDesc]
,'owner' as [SubCategoryDesc]
,case when 'owner' not in (select [SubCategoryDesc] from Table1)
then (select max([SubCategoryID])+1 from Table1)
else (select [SubCategoryID] from Table1 where [SubCategoryDesc]='owner')
end as [SubCategoryID]
from Table1
<强> SQL FIDDLE 强>
如果你想我也可以创建一个SP。但是你说你想要一个T-SQL
答案 1 :(得分:0)
这将需要三个步骤,最好是在一个存储过程中。确保它在交易中。
a)检查您尝试插入的MasterCategoryDesc是否已存在。如果是,请使用其ID。如果没有,找到最高的MasterCategoryID,增加1,并将其保存到变量。
b)与SubCategoryDesc和SubCategoryID相同。
c)使用您在步骤a和b中创建的两个变量插入新记录。
答案 2 :(得分:0)
为MasterCategory
创建一个表,为SubCategory
创建一个表。为每个___ID
制作一个identity (1,1)
列。加载时,为不存在的值插入新行,然后查找INSERT
的现有值。
在我看来,在现有表格中查找Max并查找数据时,如果发现失败的话,那就很容易了。