1

我想在下面的表中插入记录(带有示例数据的表结构)。我必须使用 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在相应的SubCategoryDesc + ID.

我可以通过删除 SubCategoryDe​​sc 和 SubCategoryID 列来简化这个问题吗?我现在如何仅使用 2 列 MasterCategoryID 和 MasterCategoryDe​​sc 来实现这一点

4

3 回答 3

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 小提琴

如果你愿意,我也可以创建一个 SP。但你说你想要一个T-SQL

于 2013-06-19T16:01:32.667 回答
0

这将需要三个步骤,最好是在一个存储过程中。确保它在交易中。

a) 检查您尝试插入的 MasterCategoryDe​​sc 是否已经存在。如果是,请获取其 ID。如果没有,找到最高的 MasterCategoryID,加一,保存到变量中。

b) 与 SubCategoryDe​​sc 和 SubCategoryID 相同。

c) 插入带有您在步骤 a 和 b 中创建的两个变量的新记录。

于 2013-06-19T15:58:22.927 回答
0

为 的创建一个表,为 的创建一个MasterCategorySubCategory。为___ID每个是identity (1,1). 加载时,为不存在的值插入新行,然后查找INSERT.

在我看来,四处寻找最大值并在现有表中查找数据是失败的秘诀。

于 2013-06-19T16:20:56.110 回答