【问题标题】:Using Merge statement in SQL server在 SQL Server 中使用 Merge 语句
【发布时间】:2020-10-13 12:42:34
【问题描述】:

在 sql server 中使用 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;

【问题讨论】:

  • source_table 使用带有WHERE 的子查询,如documentation 中的示例所示。
  • 你知道你用什么键来合并吗?

标签: sql sql-server tsql ssis msbi


【解决方案1】:

正如拉努建议的那样:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2010-11-28
    • 2012-09-19
    • 1970-01-01
    • 2011-09-03
    相关资源
    最近更新 更多