Sql 视图中的不正确联接

Sql 视图中的不正确联接,sql,tsql,views,Sql,Tsql,Views,我正在SQL Manager 2012中创建一个视图,其中包含一些员工详细信息(姓名、成本中心等)。 主报告中标记的成本中心比我需要的更详细(但是,我将来需要该信息,所以我不想删除它)。我创建了一个表,其中包含所有带有基本标签的成本中心 我将主员工表添加到视图中,然后将成本中心标签表添加到视图中。我将Employee表中的CostCenterNo连接到Label表中的CostCenterNo。我从employee表中选择了要查看的标签名称,而不是主标签 问题是,当我运行连接时,它复制了几行,从4

我正在SQL Manager 2012中创建一个视图,其中包含一些员工详细信息(姓名、成本中心等)。 主报告中标记的成本中心比我需要的更详细(但是,我将来需要该信息,所以我不想删除它)。我创建了一个表,其中包含所有带有基本标签的成本中心

我将主员工表添加到视图中,然后将成本中心标签表添加到视图中。我将Employee表中的CostCenterNo连接到Label表中的CostCenterNo。我从employee表中选择了要查看的标签名称,而不是主标签

问题是,当我运行连接时,它复制了几行,从400多行复制到1200多行。我所要做的就是用一个简单的报告标签替换复杂的标签

下面是视图中的代码

SELECT        dbo.EEMasterData.EmpNo, dbo.EEMasterData.EmpName,
dbo.EEMasterData.JobNo, dbo.EEMasterData.JobName, dbo.EEMasterData.OrgUnit,
dbo.EEMasterData.OrgName, dbo.EEMasterData.PArea,  
dbo.EEMasterData.PSubAreaNo,dbo.EEMasterData.PSubAreaName, 
dbo.EEMasterData.MasterCCNo,dbo.CostCenterConsolidatedLkUp.CostCenterMain, 
dbo.EEMasterData.PositionNo, dbo.EEMasterData.PositionName, 
dbo.EEMasterData.EmpGroupNo, dbo.EEMasterData.EmpGroupName, 
dbo.EEMasterData.EmpSubGroupNo, dbo.EEMasterData.EmpSubGroupName, 
dbo.EEMasterData.StartDate, dbo.EEMasterData.EndDate, dbo.EEMasterData.Status, 
dbo.EEMasterData.EmpStatus
FROM            dbo.CostCenterConsolidatedLkUp INNER JOIN
                     dbo.EEMasterData ON 
dbo.CostCenterConsolidatedLkUp.CostCenterMainNo = dbo.EEMasterData.MasterCCNo
我认为连接是导致复制的原因,但它不允许我在视图设计器中更改连接


是否有人知道如何更改连接,或者是否有更好的方法添加此标签。大约有100多个成本中心,因此编码将是乏味的,这就是为什么我试图通过视图来完成它。(对不起,我的时间表很短。)

这将为您提供正确的行数。它将为CostCenterConsolidatedLkUp中的CostCenterMain提供或多或少的随机值

您需要SQLServer2005+

SELECT e.EmpNo, e.EmpName,
e.JobNo, e.JobName, 
e.OrgUnit,
e.OrgName, 
e.PArea,  
e.PSubAreaNo,
e.PSubAreaName, 
e.MasterCCNo,
c.CostCenterMain, 
e.PositionNo, 
e.PositionName, 
e.EmpGroupNo, 
e.EmpGroupName, 
e.EmpSubGroupNo, 
e.EmpSubGroupName, 
e.StartDate, 
e.EndDate, 
e.Status, 
e.EmpStatus
FROM dbo.EEMasterData e 
cross apply
(select top 1 CostCenterMain
FROM dbo.CostCenterConsolidatedLkUp
WHERE CostCenterMainNo = e.MasterCCNo
) e

SELECT
更改为
selectdistinct
,然后重新运行查询。如果仍有1200个结果行,则需要重新考虑您的要求,并决定实际需要的400个结果行。@Anon distinct不是解决联接问题的更可靠的方法。我相信这是联接的问题。它目前只允许我做一个内部连接。我试图在上面键入内容并进行外部联接,但当我再次运行查询时,它给了我一个错误。那么,当dbo中有更多匹配项时,您需要哪些信息呢。CostCenterConsolidatedLkUp@t-我建议尝试指出这不是一个连接问题,而是一个“首先决定您希望查询生成什么”的问题。有多个CostCenterMainNo与每个MasterCno匹配,但Brian只想要其中一个。悬而未决的问题是:哪一个?我对上面的内容运行了一个查询,它返回了以下内容。Msg 156,15级,状态1,第20行关键字“ON”附近的语法不正确。Msg 102,级别15,状态1,第24行“e”附近的语法不正确。@BrianD.Brubaker抱歉,我的剪切粘贴中包含了太多内容。现在应该没事了