【问题标题】:Looping each record of a table and inserting data into a temp table joining another temp table in SQL循环表的每条记录并将数据插入到临时表中,在 SQL 中加入另一个临时表
【发布时间】:2013-04-30 06:18:19
【问题描述】:

我有两个临时表 #CoreUtilizationForRole1#RoleID2Details。我想使用这两个临时表将值插入到第三个临时表中。 下面是两个 Temp 表的表结构。

create table #CoreUtilizationForRole1(roleid int,SupervisorName varchar(50),ImmediateSupervisor varchar(50),UserECode varchar(50),UserName nvarchar(250),Designation varchar(250),TimeSpent float,ActivityName varchar(250))

create table #RoleID2Details(UserECode varchar(50),UserName nvarchar(250))

#CoreUtilizationForRole1 表中,我生成了一份报告并存储在其中。 #RoleID2Details 在查询中包含如下所述的数据:-

insert into #RoleID2Details
    select distinct Userecode,Username from #CoreUtilizationForRole1 where roleid=2

现在我想遍历#RoleID2Details 的每条记录,并在从#CoreUtilizationForRole1 加入时将数据插入到第三个临时表中。 实际上,我需要特定描述格式的数据,因此,需要这种循环,以便我根据我的要求将数据插入到第三个临时表中,然后使用一个简单的选择语句来显示它。

第三个表结构将是-

create table #ThirdtempTable(roleid int,SupervisorName varchar(50),ImmediateSupervisor varchar(50),UserECode varchar(50),UserName nvarchar(250),Designation varchar(250),TimeSpent float,ActivityName varchar(250))

#ThirdtempTable插入数据的逻辑就是这样循环#RoleID2Details表的每条记录-

insert into #ThirdtempTable
Select A.RoleId,A.SuperVisorName,A.Userecode,A.Username,A.Designation,A.TimeSpent,A.ActivityName 
from #CoreUtilizationForRole1 A 
inner join #RoleID2Details B 
on
A.SuperVisorName=B.UserName
where B.UserECode= --First UserECode from #RoleID2Details

insert into #ThirdtempTable
Select A.RoleId,A.SuperVisorName,A.Userecode,A.Username,A.Designation,A.TimeSpent,A.ActivityName 
from #CoreUtilizationForRole1 A 
inner join #RoleID2Details B 
on
A.UserName=B.UserName
where A.UserECode=--First UserECode from #RoleID2Details

直到我们从#RoleID2Details 表中提取所有记录并将其插入到#ThirdtempTable 表中为止。

【问题讨论】:

    标签: sql sql-server-2008 sql-server-2005


    【解决方案1】:
    insert into #your3rdTempTable
    select distinct t1.UserECode,t1.UserName from
    #CoreUtilizationForRole1 t1 join #RoleID2Details t
    on t1.UserECode=t2.UserECode and t1.UserName = t2.UserName 
    

    你可以试试这个方法:

    insert into #ThirdtempTable
    Select A.RoleId,A.SuperVisorName,A.Userecode,A.Username,A.Designation,A.TimeSpent,A.ActivityName 
    from #CoreUtilizationForRole1 A 
    inner join #RoleID2Details B 
    on
    A.SuperVisorName=B.UserName
    where B.UserECode=A.UserECode
    
    insert into #ThirdtempTable
    Select A.RoleId,A.SuperVisorName,A.Userecode,A.Username,A.Designation,A.TimeSpent,A.ActivityName 
    from #CoreUtilizationForRole1 A 
    inner join #RoleID2Details B 
    on
    A.UserName=B.UserName
    where A.UserECode=A.UserECode
    

    【讨论】:

    • 更新了我的问题。我想循环遍历每条记录,因为我想将数据插入到特定的序列中。
    • 从#RoleID2Details 表循环每个用户代码并插入#ThirdtempTable,我的问题中提到了将数据插入#ThirdtempTable 的顺序。
    • 检查更新的答案。现在它会做你想做的事
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多