繁体   English   中英

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

[英]How to in insert new rows from one table to another based on date?

我有两张桌子(table1 和 table2)。 我在 table1 中有Date, A, B, CDate, D, E在 table2 中有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 

首先,您必须将这些列添加到 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

您是在询问如何JOIN表,因为您不能使用 insert 语句添加列

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM