我有几个表,我正在对它们进行一些计算以确定每种类型的记录中有多少要插入到另一个表中。例如,主要实体是县、成员、计划。当我完成计算时,我最终得到如下结果:
- 将 25 个 [County A] + [Plan 1] 记录插入表中
- 将 15 个 [County A] + [Plan 2] 记录插入表中
- 将 10 条 [County A] + [Plan 3] 记录插入表中
- 将 15 个 [County A] + [Plan 4] 记录插入表中
- 将 25 个 [County A] + [Plan 5] 记录插入表中
- 将 63 条 [County B] + [Plan 1] 记录插入表中
- 将 47 [County B] + [Plan 3] 记录插入表中
- 将 19 个 [County B] + [Plan 4] 记录插入表中
INSERTS 看起来像:
INSERT INTO Assign (ID, CountyID, PlanID)
VALUES (NEWID(), 'A', 1), (NEWID(), 'A', 1), ..., (NEWID(), 'A', 1) -- 25 times
INSERT INTO Assign (ID, CountyID, PlanID)
VALUES (NEWID(), 'A', 2), (NEWID(), 'A', 2), ..., (NEWID(), 'A', 2) -- 15 times
ETC
我正在寻找一种从存储过程中构建这些 INSERT 语句的方法:
- 不要使用游标和/或 while 循环
- 不做单独的插入,想要批量插入的方法
- 使用 CTE?(不需要,但谁知道)
所有这些信息都存储在一个临时表中,定义为:
CREATE TABLE #holding (countyID CHAR(2), planID INT, perCountyPlan INT)
SELECT * FROM #holding ORDER BY countyID, planID
A 1 25
A 2 15
A 3 10
A 4 15
A 5 25
B 1 63
B 3 47
B 4 19
C .......
etc
任何想法如何根据#history 表数据形成插入?