【发布时间】:2015-03-20 15:12:15
【问题描述】:
我有3张表,如下:
tblAgentVisit (VisitID auto-increments)
VisitID (PK) | StatusID | A bunch of other columns
--------------------------------------------------
1 | 1 | etc.
2 | 1 | etc.
tblAgentVisitAgents
VisitID | AgtID | Prime
-----------------------
1 | 8507 | 1
2 | 56 | 1
tblAgentVisitLoad
AgtID
-----
2077
3068
432
每个季度,我们都会挑选前 20% 的代理,并将他们的 ID 加载到 tblAgentVisitLoad。
我需要为表中的每个代理创建一个新的、唯一的访问。我需要 INSERT 我的 StatusID 和其他列到 tblAgentVisit,获取自动递增的 VisitID(使用 OUTPUT?),然后将 INSERT VisitID、AgtID 和 Prime = 1 放入 tblAgentVisitAgents。同样,每个代理的每次访问都必须是唯一的。
理想情况下,这就是我完成后表格的外观:
tblAgentVisit (VisitID auto-increments)
VisitID (PK) | StatusID | A bunch of other columns
--------------------------------------------------
1 | 1 | etc.
2 | 1 | etc.
3 | 1 | etc.
4 | 1 | etc.
5 | 1 | etc.
tblAgentVisitAgents
VisitID | AgtID | Prime
-----------------------
1 | 8507 | 1
2 | 56 | 1
3 | 2077 | 1
4 | 3068 | 1
5 | 432 | 1
有人对在 MS SQL Server 2005 中执行此操作有什么建议吗?我完全被难住了。
【问题讨论】:
-
如果您可以将 DateCreated 字段添加到 tblAgentVisit,您可以根据该字段获取当前季度的记录并将这些记录插入 tblAgentVisitAgents。
-
问题是这可能会或可能不会在季度的第一天运行,并且其他单数记录将随机添加。我想。我们可能会改变它的工作方式,所以我会记住这一点。谢谢!
-
你在正确的轨道上。使用
INSERT上的OUTPUT子句将新分配的标识值放入临时表中,然后继续下一个任务。 -
我想我只是不明白如何将 tblAgentVisitLoad 中的每条记录作为自己的条目进行迭代。由于每个代理都需要一个唯一的 VisitID,因此它们必须在同一个块中运行,然后移动到下一条记录,对吗?
标签: sql sql-server tsql sql-server-2005