这是一个SQL Server问题。左连接复制
我连接来自同一个数据库的三个表,并不断获取重复值。表REF_Plan_Dictionary和REF_Plan_Assign_Default将自行生成重复项,因为某些列将引用其他列中的多个子选项。表dev_OUT_MasterEmp只会为每个EmpID生成一条记录。
该查询的目的是使用M.EmpID并将来自其他两个表的信息与这条信息相匹配。重复项是EmpID重复多次的位置,但所有信息只匹配一次。这意味着我提到的子选项没有显示出来,因为其他两个表匹配正确。所以这不是匹配,这是相同的信息重复的事实。
我该如何摆脱重复?
SELECT M.EmpId
,EmpName
,[UserId]
,PA.Plan_Dict_Id
,m.Job_Code
,Dept_Num
,PayGroup
,D.Plan_Name
,Plan_Desc
,M.[File_Nbr]
,[Mgr_EmpId]
,[Work_Location]
,[Emp_Tenure]
,[Emp_Status]
,[Plan_Eligibility]
,M.[Function_Role_Code]
,[Hire_Date]
,[Job_Entry_Date]
,[Term_Date]
,[Dept_Num]
,[TeamID]
,[CCGroup]
,[Channel]
,[Organization]
,[Hourly_Rate]
,[HC]
FROM [Compensation].[dbo].[dev_OUT_MasterEmp] M
left join Compensation..REF_Plan_Dictionary D on M.Plan_Id = D.Plan_Dict_Id
left join Compensation..REF_Plan_Assign_Default PA on M.Plan_Id = PA.Plan_Dict_Id
这是我的结果的一个例子:
这是表REF_Plan词典:
这是表REF_Plan_Assign_Default:
样本数据/输出将有所帮助。 – canon
如果您的映射表中有多个条目,则结果中将有重复的EmpId。要删除重复的结果,您需要先在EmpId上创建结果,然后再次将结果与Employee表结合以添加其他信息。 – Tim3880
@ Tim3880我曾想过这件事。问题是没有其他表有员工ID,所以我不得不引用其他列加入他们。 – MHeath