0

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

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

问题是当我运行连接时,它复制了几行,从 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 多个成本中心,所以编码会很乏味,这就是为什么我试图通过视图来完成它。(我的时间表很短,抱歉)。

4

1 回答 1

1

这将为您提供正确的行数。它会给你一个来自 CostCenterConsolidatedLkUp 的 CostCenterMain 或多或少的随机值。

你需要 sqlserver 2005+

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
于 2013-07-17T19:19:15.603 回答