【问题标题】:How to use merge statement to split one staging tables into two for loading from Staging to RealtionalDB?如何使用合并语句将一个临时表拆分为两个以从 Staging 加载到 RealtionalDB?
【发布时间】:2016-03-03 16:18:59
【问题描述】:

我有以下表格。我想从 test1 表中将值插入 companyGroup 和 Comapany。什么是更好的 CTE 方式或直接使用 Merge 以及如何使用 tsql 来做到这一点。 Test1 在数据库 A 上,company 和 companygroup 在数据库 B 上。

    create table test1
  (
  companyID int identity
  ,CompanyName Varchar(50)
  ,[Group] Varchar(5)
  )

  INSERT INTO (CompanyName, [Group]) values ('Unknown', '0')
  INSERT INTO (CompanyName, [Group]) values ('APPLE', 'IOS')
  INSERT INTO (CompanyName, [Group]) values ('Google', 'Android')
  INSERT INTO (CompanyName, [Group]) values ('Samsung', 'Android')
  INSERT INTO (CompanyName, [Group]) values ('Lg', 'IOS')

  create table CompanyGroup
  (
     Groupkey int identity (0,1) primary key
    ,GroupName varchar(5)  
  ) ;

  INSERT INTO (GroupName) VALUES ('Unknown')

  create table Company
  (
    compnayKey int identity (0,1) primary key
    ,CompanyName Varchar(50)
    ,companyGroupKey int References CompanyGroup(GroupKey)
  )

  INSERT INTO (CompanyName,companyGroupKey) VALUES ('Unknown',0)

当我将值插入公司时,我如何将 group 转换为 int ?有任何想法吗?这种负载的最佳 TSQL 是什么。

【问题讨论】:

    标签: sql tsql merge common-table-expression


    【解决方案1】:

    试试这个:

      INSERT INTO CompanyGroup(GroupName)
      SELECT [Group]
      FROM test1
      WHERE NOT EXISTS(SELECT 1 
                       FROM CompanyGroup 
                       WHERE GroupName = [Group]);
    
      MERGE Company AS target
        USING (SELECT t.CompanyName, g.Groupkey
                FROM test1 AS t
                LEFT JOIN CompanyGroup AS g ON t.[Group] = g.GroupName
            ) AS source
        ON (target.CompanyName = source.CompanyName 
            AND target.companyGroupKey = source.Groupkey)
      WHEN NOT MATCHED THEN
        INSERT (CompanyName, companyGroupKey)
        VALUES (source.CompanyName, source.Groupkey);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多