SQL合并语句协助

问题描述

enter image description here

下午好,

在尝试执行此步骤之前,我正在尝试执行sql合并。

  1. 下降温度表(如果存在)

  2. 创建一个临时表(源)

    USE Kronos Create table #tempGlobal --Source ( [800#] [bigint] NOT NULL,[FirstName] [varchar](20) NOT NULL,[MI] CHAR(20) NULL,[LastName] [nvarchar](30) NOT NULL,[NickName] CHAR(15) NULL,[Position] [nvarchar](50) NULL,[Department] [varchar](30) NULL,[EmployeeStatus] [char](20) NOT NULL,[CredentialDocument] VARCHAR(10) NOT NULL,[RehireDate] [date] NULL,[DateHired] [date] NOT NULL,[DateTerminated] [date] NULL)

  3. 从CSV批量插入到临时表中

  4. 合并源表和目标表

我没有收到任何工作错误,但是在我的测试会话中数据没有得到更新。

第4步:

`      Select t.[800#],t.[FirstName],t.[MI],t.[LastName],t.[NickName],t.[Position],t.[Department],t.[EmployeeStatus],t.[CredentialDocument],t.[RehireDate],t.[DateHired],t.[DateTerminated]
        From [dbo].[Employees] t --Target
        Merge [dbo].[Employees] t
        using [dbo].[#tempGlobal] s --Source Temp Table
        on t.[800#] = s.[800#] --Stays the same even if rehired
        WHEN MATCHED 
        AND 
        ( 
        s.[LastName] <> t.[LastName]
        OR s.[Position] <> t.[Position]
        OR s.[Department] <> t.[Department]
        OR s.[EmployeeStatus] <> t.[EmployeeStatus]
        OR s.[RehireDate] <> t.[RehireDate]
        OR s.[DateTerminated] <> t.[LastName]
        )
        THEN
        UPDATE SET LastName = s.LastName,Position = s.Position,Department = s.Department,EmployeeStatus = s.EmployeeStatus,RehireDate = s.RehireDate,DateTerminated = s.DateTerminated

        WHEN NOT MATCHED --Source table doesn't match target table so we need to update the target     table to match
        THEN INSERT 
        (
        [800#],[FirstName],[MI],[LastName],[NickName],[Position],[Department],[EmployeeStatus],[CredentialDocument],[RehireDate],[DateHired],[DateTerminated])
        VALUES 
        (
        s.[800#],s.FirstName,s.MI,s.LastName,s.NickName,s.Position,s.Department,s.EmployeeStatus,s.CredentialDocument,s.RehireDate,s.DateHired,s.DateTerminated);`

   

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)