将所选数据从多个表插入到单个表中

时间:2011-08-25 12:21:16

标签: sql sql-server sql-server-2005 tsql

我在SQL Server 2005中有以下表结构。

  1. 出勤详情(AttenID, Date, EmpID,....
  2. A_OfficialDetail(AttenID, OfficeOut, OfficeIn
  3. A_Personal Detail(AttenID, OfficeOut, OfficeIn
  4. A_RecessDetail(AttenID, OfficeOut, OfficeIn
  5. Atten_Temp_AttenDetail **(EmpID, AttenID, Detail, OfficeOut, OfficeIn
  6. 我需要一个纯SQL代码才能将数据从table 5插入table 1,2,3,4,以便:

    • AttendanceDetailEmpID=100Table 2,3,4AttenID的{​​{1}}匹配AttendanceDetail

    我用光标和循环尝试了但是无法得到我想要的东西,它插入的记录超出了我的意愿。请帮我。在此先感谢

    应根据AttendanceDetail中的AttenID,从3个表A_OfficialDetail,A_recessdetail和A_PersonalDetail中插入OfficeOut和OfficeIn。主要目的是在Atten_Temp_AttenDetail表中插入Official Out-in,Recess Out-in和Personal Out-in的数据。该表应该看起来像:

    EmpID=100

    我尝试的代码是

    ==================================
    UserID  AttenID  Date      Remark   OfficeOut  OficeIN
    
    100      12      7/8/2011  Office   11:00       12:00
    
    100      12      7/8/2011  Office   13:45        14:00
    

2 个答案:

答案 0 :(得分:1)

这看起来真的很简单......

INSERT INTO Atten_Temp_AttenDetail 
SELECT 
a.EmpID, 
a.AttenID,
'', -- You have no fields for this in the database, may be in AttendanceDetail
b.OfficeOut, -- With the next two, not sure if you want to use A_OfficialDetail or A_Personal Detail
c.OfficeIn
FROM AttendanceDetail a
INNER JOIN A_OfficialDetail b ON a.AttenID = b.AttenID
INNER JOIN [A_Personal Detail] c ON a.AttenID = c.AttenID
INNER JOIN A_RecessDetail d on a.AttenID = d.AttenID
WHERE a.EmpID = 100

你在追求什么?

答案 1 :(得分:0)

我首先要做一个查询,也许是通过使用连接,这给了我应该保存的结果。

然后它只是一种选择,以便在Atten_Temp_AttenDetail中保存数据。

SQL和连接应该如何,取决于表之间的关系

更新:如果表2,3,4或多或少相同,那么如何使用UNION?