问题描述
在尝试执行此步骤之前,我正在尝试执行sql合并。
-
下降温度表(如果存在)
-
创建一个临时表(源)
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)
-
从CSV批量插入到临时表中
-
合并源表和目标表
我没有收到任何工作错误,但是在我的测试会话中数据没有得到更新。
第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 (将#修改为@)