【发布时间】:2012-11-13 18:00:47
【问题描述】:
我有几个表,我正在对它们进行一些计算以确定每种类型的记录有多少要插入到另一个表中。例如,主要实体是县、成员、计划。当我完成计算后,我会得到如下结果:
- 在表中插入 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
等
我正在寻找一种在存储过程中构建这些 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 表数据形成插入?
【问题讨论】:
标签: sql-server-2008 bulkinsert