如何根据日期从一个表向另一个表插入新行?

时间:2018-08-09 14:10:33

标签: sql sql-server

我有两个表(table1和table2)。我在表1中有Date, A, B, C列,在表2中有Date, D, E列。我需要基于两个表中的日期将D和E列从table2转移到table1。谁能帮忙

尝试以下代码,但获取“无法绑定多部分标识符” table1.Date”。错误

  INSERT INTO table1
SELECT D,E FROM table2
WHERE table2.Date = table1.Date


Table1 :
Date        A   B   C
1945-01-01  1   2   3
1945-02-01  1   2   4  
1945-03-01  5   6   7 

Table2 :
Date        D   E   
1945-02-01  8   2     
1945-03-01  5   6   

预期输出:

Table1 :
Date        A   B   C  D      E
1945-01-01  1   2   3  Null   Null
1945-02-01  1   2   4  8      2
1945-03-01  5   6   7  5      6 

2 个答案:

答案 0 :(得分:1)

首先,您必须将这些列添加到Table1中。然后,您需要更新现有行。这样的事情应该起作用。

alter table Table1
    add D int

alter table Table1
    add E int

GO

update t
set D = t2.D
    , E = t2.E
from Table2 t2
left join Table1 t on t.Date = t2.Date

答案 1 :(得分:0)

您宁愿问如何JOIN表,因为您不能使用插入语句添加列

话虽如此,您正在寻找LEFT JOIN(好吧,如果运算符左侧的表是Table1),请尝试以下操作:

SELECT * FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.[Date] = T2.[Date]

如果您希望将此表作为“表”并在不使用JOIN的情况下使用,那么我建议您熟悉以下视图:CREATE VIEW (Transact-SQL)