在sqlserver中使用merge语句

pexxcrt2  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(381)

在sqlserver中使用merge,我只需要从源表中加载1年的数据。请帮我建立逻辑。

DATEADD(year,-1,getdate()) -- one year date

MERGE target_table USING source_table
ON merge_condition
WHEN MATCHED
    THEN update_statement
WHEN NOT MATCHED
    THEN insert_statement;
idfiyjo8

idfiyjo81#

正如拉努所建议的:

MERGE target_table 
USING (SELECT * FROM source_table WHERE somedatecolumn > DATEADD(year,-1,getutcdate())) x
ON merge_condition
WHEN MATCHED
    THEN update_statement
WHEN NOT MATCHED
    THEN insert_statement

驱动合并的源表是合并中唯一涉及的数据。如果源表有1000行,但去年只有10行,那么合并操作将超过10行。如果目标表有10000行,并且其中7行与源表的10行中的行匹配,则将进行7次更新,并进行3次插入。在操作结束时,目标表将有10003行

相关问题