博客
关于我
merge into 笔记
阅读量:799 次
发布时间:2023-02-08

本文共 2697 字,大约阅读时间需要 8 分钟。

为了确保数据库中的数据完整性和一致性,我们需要对相关表进行合理的数据处理和类型创建。以下是具体的步骤说明:

第一步:检查并删除旧类型

执行以下T-SQL语句确保类型已存在且准备删除:

    IF EXISTS (        SELECT 1 FROM sys.types t        JOIN sys.schemas s ON t.schema_id = s.schema_id        WHERE t.name = 'tp_AICMonthlyWarrantData' AND s.name = 'MIR'    )    DROP TYPE MIR.tp_AICMonthlyWarrantData    GO    

第二步:创建新类型

使用以下T-SQL语句创建需要的表类型:

    CREATE TYPE MIR.tp_AICMonthlyWarrantData AS TABLE    (        SecId CHAR(10) NOT NULL,        EffectiveDate DATE NOT NULL,        WarrantIssued INT NULL,        WarrantExercised INT NULL,        WarrantsCancelled INT NULL,        WarrantsExpired INT NULL,        Outstanding BIGINT NULL,        Note NVARCHAR(500) NULL    )    GO    

同时授予公众执行权限:

    GRANT EXECUTE ON TYPE::MIR.tp_AICMonthlyWarrantData TO PUBLIC    GO    

第三步:执行数据合并操作

对数据表进行合并操作,确保数据的一致性:

    MERGE INTO OperationData.MIR.AICMonthlyWarrantData a    USING @p_warrantTable b    ON a.SecId = b.SecId AND a.EffectiveDate = b.EffectiveDate    WHEN MATCHED THEN    SET a.Issued = b.WarrantIssued,        a.Exercised = b.WarrantExercised,        a.Repurchased = b.WarrantsCancelled,        a.Expired = b.WarrantsExpired,        a.Outstanding = b.Outstanding,        a.Note = b.Note    WHEN NOT MATCHED THEN    INSERT (SecId, EffectiveDate, Issued, Exercised, Repurchased, Expired, Outstanding, Note, LastUpdate)    VALUES (b.SecId, b.EffectiveDate, b.WarrantIssued, b.WarrantExercised, b.WarrantsCancelled, b.WarrantsExpired, b.Outstanding, b.Note, getdate())    GO    

第四步:执行可转换数据合并操作

对可转换数据表进行合并操作:

    MERGE INTO OperationData.MIR.AICMonthlyCovertibleData a    USING @p_convertibleTable b    ON a.SecId = b.SecId AND a.EffectiveDate = b.EffectiveDate    WHEN MATCHED THEN    SET a.Issued = b.ConvertibleIssued,        a.Repurchased = b.ConvertibleRepurchased,        a.Converted = b.ConvertibleConverted,        a.Redeemed = b.ConvertibleRedeemed,        a.Outstanding = b.Outstanding,        a.Note = b.Note,        a.ConvertibleTotalValue = b.ConvertibleConvertibleTotalValue,        a.ConvertibleFairValue = b.ConvertibleConvertibleFairValue    WHEN NOT MATCHED THEN    INSERT (SecId, EffectiveDate, Issued, Repurchased, Converted, Redeemed, Outstanding, Note, ConvertibleTotalValue, ConvertibleFairValue, LastUpdate)    VALUES (b.SecId, b.EffectiveDate, b.ConvertibleIssued, b.ConvertibleRepurchased, b.ConvertibleConverted, b.ConvertibleRedeemed, b.Outstanding, b.Note, b.ConvertibleConvertibleTotalValue, b.ConvertibleConvertibleFairValue, getdate())    GO    

以上操作完成后,数据将被正确合并到目标数据表中,确保数据的完整性和一致性。

转载地址:https://www.cnblogs.com/mibing/p/8609787.html

你可能感兴趣的文章
Webpack 基本环境搭建
查看>>
mysql5.7 安装版 表不能输入汉字解决方案
查看>>
MySQL5.7.18主从复制搭建(一主一从)
查看>>
MySQL5.7.19-win64安装启动
查看>>
mysql5.7.19安装图解_mysql5.7.19 winx64解压缩版安装配置教程
查看>>
MySQL5.7.37windows解压版的安装使用
查看>>
mysql5.7免费下载地址
查看>>
mysql5.7命令总结
查看>>
mysql5.7安装
查看>>
mysql5.7性能调优my.ini
查看>>
MySQL5.7新增Performance Schema表
查看>>
Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
查看>>
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>