我正在寻求做这件事。
在我获得1级位置列表的情况下,为每个位置插入“主办公室”2级位置,并在插入语句中迭代使用我的Get_Next_PK
存储过程。
我觉得我可能错过了以不同方式做到这一点的明显方式。
Level2 PK不是唯一的,因此也不是自动增量/身份
DECLARE @foo INT
INSERT INTO LocationLvl2_Table
EXEC Get_Next_PK 'LocationLvl2_Table', @foo OUTPUT
SELECT
@foo, LocationLvl1_Code, 'Main Office', 1
FROM
(SELECT DISTINCT
LocationLvl1_Code
FROM
LocationLvl1_Table
WHERE...)
我得到的结果:我的函数拉出正确的下一个PK,但只有一次,所以所有行都有相同的PK。最重要的是,我看到我想要插入的数据显示在我的结果窗口中,但实际上没有任何数据插入到表中
示例信息: 我有5个Lvl_1位置和12个Lvl_2位置(PK 1-12)。所有5个lvl_1都有'主入口'和'自助餐厅'lvl_2位置。其中2人有一个'主办公室'lvl_2。
我想为每个没有lvl_1的lvl_1插入一个'主办公室'lvl_2。 (那个逻辑从我在where语句中落后的地方开始。)
Get_Next_PK
将'location_lvl2'表名作为参数,并返回'13'作为下一个PK。
我想遍历每个没有'main office'的lvl_1,并在insert语句中使用SP的输出变量(@foo)给它们一个lvl_2。
答案 0 :(得分:0)
经过一些谷歌搜索,并从@HLGEM向正确的方向推动我能够做到这一点。我知道,这并不理想,但它解决了我的问题。
DECLARE @foo INT
EXEC Get_Next_PK 'LocationLvl2_Table', @foo OUTPUT
INSERT INTO LocationLvl2_Table
SELECT @foo + ROW_NUMBER() over(order by LocationLvl1_Code), LocationLvl1_Code, 'Main Office', 1
FROM
(SELECT DISTINCT
LocationLvl1_Code
FROM
LocationLvl1_Table
WHERE...)