将sql数据透透表与其他表中的列连接时重复数据

时间:2014-03-07 18:38:50

标签: sql sql-server-2008-r2

我正在尝试将三个表中的列与一个Pivot表组合在一起,并且它给了我重复的行,其中枢轴值已关闭,我无法找到解决它的方法。

这是我到目前为止的查询:

SELECT 
  r.resourceId AS ResourceID, 
  r.resourceName AS ResourceName,
  p.projectId As ProjectId,
  p.projectNumber AS ProjectNumber,
  p.projectName AS ProjectName,
  p.projectSystem AS ProjectSystem,
  p.projectManager AS ProjectManager,
  a.[May 2014],
  a.[June 2014]

FROM 
  Projects p, Resources r 
JOIN (
  SELECT * FROM allocation a
    PIVOT (SUM(allocationValue) FOR AllocationMonth IN ([May 2014], [June 2014])) PVT
) a ON (r.resourceId = a.resourceId) ORDER BY resourceId

我知道原因是因为一个资源可能被分配给多个项目而且这个查询没有区别对象,我的问题是如何根据resourceId以及projectId进行调整? / p>

当我将最后一行编辑为“ON(r.resourceId = a.resourceId AND p.projectId = a.projectId)ORDER BY resourceId”时出现此错误“多部分标识符”p.projectId“无法受到约束。“

我是SQL的新手,所以任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT 
r.resourceId AS ResourceID, 
r.resourceName AS ResourceName,
p.projectId As ProjectId,
p.projectNumber AS ProjectNumber,
p.projectName AS ProjectName,
p.projectSystem AS ProjectSystem,
p.projectManager AS ProjectManager,
a.[May 2014],
a.[June 2014]

FROM 
  Projects p, Resources r 
JOIN (
  SELECT * FROM allocation a
    PIVOT (SUM(allocationValue) FOR AllocationMonth IN ([May 2014], [June 2014])) PVT
) a ON (r.resourceId = a.resourceId) ORDER BY resourceId
where p.projectId = a.projectId
相关问题