use*_*014 2 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
但是在执行第二个查询时,出现错误:
每个表中的列名必须是唯一的。多次指定表 'Khanger2013' 中的列名 'transactID'。
通过使用 select * 您要求所有列。由于两个表都有一个事务 ID,这将在目标表中创建两次,这是不允许的。你需要使用类似的东西:
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