每个表中的列名必须是唯一的。在sql server中将表数据从一个表复制到另一个表

时间:2014-05-15 11:39:26

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

我有一个表Transaction_tbl,其中包含以下列:

transactid   Tbarcode     dtime

1            100          2013-04-16 14:15:47.243
2            101          2013-05-10 10:15:47.243
3            102          2014-02-20 02:15:48.000

在此表中,transactid是主键。

我还有一个表KHanger_tbl,其中包含以下列:

transactid   Hbarcode
1             21
2             22
3             23

KHanger_tbl这个transactid is the foregin key

我想将日期范围< = 2013-12-30数据从Transaction表移至另一个名为Transaction2013..的表(我的意思是2013年的数据)

同一时间相应的Khanger_table数据需要移至名为Khanger2013

的表格

我正在执行查询时创建一个新表..

第一次查询

select * into Transaction2013
from Transaction_tbl
where dtime <='2013-12-30'

第二次查询

select * into Khanger2013
from KHanger_tbl 
inner join Transaction_tbl
on Transaction_tbl.transactID=KHanger_tbl.transactid
where Transaction_tbl.dtime <='2013-12-30

但在执行第二个查询时,出现错误:

  

每个表中的列名必须是唯一的。列名&#39; transactID&#39;在桌子&#39; Khanger2013&#39;被指定不止一次。

1 个答案:

答案 0 :(得分:4)

通过使用select *,您要求所有列。由于两个表都有一个transactionid,因此将在目标表中创建两次,这是不允许的。你需要使用类似的东西:

select k.transactid, k.Hbarcode into Khanger2013
 from KHanger_tbl k
inner join Transaction_tbl t
on t.transactid=k.transactid
where t.dtime <='2013-12-30