测试数据仓库中的第2类缓慢变化的维度

1,338 阅读1分钟

SELECT EmployeeNationalIDAlternateKey

,SK1

,SK2

FROM (

SELECT P.EmployeeKey SK1

,N.EmployeeKey SK2

,P.雇员全国IDAlternateKey

,CASE

WHEN P.ParentEmployeeKey <> N.ParentEmployeeKey

那么 '不匹配'

否则 '匹配'

END Matched_ParentEmployeeKey

,CASE

WHEN P.EmployeeNationalIDAlternateKey <> N.EmployeeNationalIDAlternateKey

那么 '不匹配'

否则 '匹配'

END Matched_EmployeeNationalIDAlternateKey

,CASE

当 P.ParentEmployeeNationalIDAlternateKey <> N.ParentEmployeeNationalIDAlternateKey

那么 '不匹配'

否则 '匹配'。

END Matched_ParentEmployeeNationalIDAlternateKey

,CASE

当 P.SalesTerritoryKey <> N.SalesTerritoryKey

那么 '不匹配'

否则 '匹配'

END Matched_SalesTerritoryKey

,CASE

WHEN P.名 <> N.名

则 '不匹配'

否则 '匹配'

END Matched_FirstName

,CASE

WHEN P.LastName <> N.LastName

则 '不匹配'

否则 '匹配'

END Matched_LastName

,CASE

WHEN P.MiddleName <> N.MiddleName

则 '不匹配'

否则 '匹配'

END Matched_MiddleName

,CASE

当 P.NameStyle <> N.NameStyle

则 '不匹配'

否则 '匹配'

END Matched_NameStyle

,CASE

当 P.标题 <> N.标题

那么 '不匹配'

否则 '匹配'

END Matched_Title

,CASE

WHEN P.HireDate <> N.HireDate

则 '不匹配'

else '匹配'

END Matched_HireDate

,CASE

WHEN P.出生日期 <> N.出生日期

则 '不匹配'

else '匹配'

END Matched_BirthDate

,CASE

WHEN P.LoginID <> N.LoginID

则 '不匹配'

else '匹配'

END Matched_LoginID

,CASE

WHEN P.EmailAddress <> N.EmailAddress

则 '不匹配'

else '匹配'

END Matched_EmailAddress

,CASE

WHEN P.电话 <> N.电话

则 '不匹配'

else '匹配'

END Matched_Phone

,CASE

WHEN P.MaritalStatus <> N.MaritalStatus

则 '非匹配'

else '匹配'

END Matched_MaritalStatus

,CASE

WHEN P.紧急联系人姓名 <> N.紧急联系人姓名

则 '不匹配'

否则 '匹配'

END Matched_EmergencyContactName

,CASE

WHEN P.EmergencyContactPhone <> N.EmergencyContactPhone

则 '不匹配'

否则 '匹配'

END Matched_EmergencyContactPhone

,CASE

当 P.SalariedFlag <> N.SalariedFlag

则 '不匹配'

否则 '匹配'

END Matched_SalariedFlag

,CASE

WHEN P.性别 <> N.性别

那么 '非匹配'

否则 '匹配'

END Matched_Gender

,CASE

WHEN P.PayFrequency <> N.PayFrequency

则 '不匹配'

否则 '匹配'

END Matched_PayFrequency

,CASE

WHEN P.BaseRate <> N.BaseRate

则 '不匹配'

else '匹配'

END Matched_BaseRate

,CASE

当 P.VacationHours <> N.VacationHours

则 '不匹配'

else '匹配'

END Matched_VacationHours

,CASE

WHEN P.SickLeaveHours <> N.SickLeaveHours

则 '不匹配'

else '匹配'

END Matched_SickLeaveHours

,CASE

WHEN P.SalesPersonFlag <> N.SalesPersonFlag

则 '不匹配'

否则 '匹配'

END Matched_SalesPersonFlag

,CASE

WHEN P.部门名称 <> N.部门名称

那么 '不匹配'

否则 '匹配'

END Matched_DepartmentName

,CASE

当 P.status <> n.status

则 '未匹配'

else '匹配'

END Matched_Status

FROM (

SELECT *

,rank() over (

PARTITION BY EmployeeNationalIDAlternateKey ORDER BY EmployeeKey

) 级别

FROM dbo.雇员

) P

INNER JOIN (

SELECT *

,rank() over (

PARTITION BY EmployeeNationalIDAlternateKey ORDER BY EmployeeKey

) 级别

FROM dbo.级别

) N ON P.EmployeeNationalIDAlternateKey = N.雇员国家IDAlternateKey

和 P.排名 + 1 = N.级别

) Q

WHERE Matched_ParentEmployeeKey = 'MATCHED'。

AND Matched_EmployeeNationalIDAlternateKey = 'MATCHED'。

AND Matched_ParentEmployeeNationalIDAlternateKey = 'MATCHED'。

AND Matched_SalesTerritoryKey = 'MATCHED'.

AND Matched_FirstName = 'MATCHED'.

AND Matched_LastName = 'MATCHED'.

AND Matched_MiddleName = 'MATCHED'。

AND Matched_NameStyle = 'MATCHED'。

AND Matched_Title = 'MATCHED'。

AND Matched_HireDate = 'MATCHED' 。

AND Matched_BirthDate = 'MATCHED'。

AND Matched_LoginID = 'MATCHED'.

AND Matched_EmailAddress = 'MATCHED'。

AND Matched_Phone = 'MATCHED'。

AND Matched_MaritalStatus = 'MATCHED'.

AND Matched_EmergencyContactName = 'MATCHED'。

AND Matched_EmergencyContactPhone = 'MATCHED'。

AND Matched_SalariedFlag = 'MATCHED'。

AND Matched_Gender = 'MATCHED'。

AND Matched_PayFrequency = 'MATCHED'.

AND Matched_BaseRate = 'MATCHED' 。

AND Matched_VacationHours = 'MATCHED' 。

AND Matched_SickLeaveHours = 'MATCHED' 。

AND Matched_SalesPersonFlag = 'MATCHED'。

AND Matched_DepartmentName = 'MATCHED'。

AND Matched_Status = 'MATCHED'.