Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-结果值部分过高-语法问题?_Sql_Sql Server_Syntax_Syntax Error_Project Server - Fatal编程技术网

SQL-结果值部分过高-语法问题?

SQL-结果值部分过高-语法问题?,sql,sql-server,syntax,syntax-error,project-server,Sql,Sql Server,Syntax,Syntax Error,Project Server,我得到了一个资源计划查询,它应该显示当前财年每个资源的实际工时、剩余工时和总工时 然而,所有那些有剩余工作的行,即在当前的月份或未来的月份,但在过去的月份没有显示出太高的工作值 即2016年1月的所有数值(剩余、实际和总工作量)均正确。2016年2月至12月,所有数值均不正确 过高的值不会乘以相同的因子,并且所有错误的值都不会加上一个常量。 这就是为什么我怀疑可能有一些扇出问题(某些列乘以另一列或一个项出现的次数)是由大量联接引起的 我想知道这是一个语法问题还是我查询了错误的字段。如果您能告诉我

我得到了一个资源计划查询,它应该显示当前财年每个资源的实际工时、剩余工时和总工时

然而,所有那些有剩余工作的行,即在当前的月份或未来的月份,但在过去的月份没有显示出太高的工作值

即2016年1月的所有数值(剩余、实际和总工作量)均正确。2016年2月至12月,所有数值均不正确

过高的值不会乘以相同的因子,并且所有错误的值都不会加上一个常量。 这就是为什么我怀疑可能有一些扇出问题(某些列乘以另一列或一个项出现的次数)是由大量联接引起的

我想知道这是一个语法问题还是我查询了错误的字段。如果您能告诉我,我的查询中是否存在导致总和聚合错误的内容,请告诉我:)


需要注意的其他可能重要信息:

工作是从项目、工作分配和任务聚合而来的,因为查询也是为了显示这种详细程度而设计的。但是,为了查找错误,我已经从SELECT和GROUP中删除了这个选项,以缩小查询范围

最初,工作是按时间记录的,而不是按会计时间记录的。因此,查询中有一部分将工作时间框架连接到一个表,该表包含正常日历和会计日历。 在查询的那一点上,我遇到了一个“扇出”问题,这就是为什么我将单独的SELECT语句放在左连接中。然而,在当时,所有价值(不仅仅是当前/未来价值)都明显过高。 sub SELECT语句修复了该问题,但仍然存在错误值

SELECT 
MSP_EpmResource_UserView.ResourceName,
totals.[FiscalMemberKeyPeriod] AS FiscalMonth,
SUM(MSP_EpmAssignmentByDay_UserView.AssignmentWork) AS Work,
SUM(MSP_EpmAssignmentByDay_UserView.AssignmentActualWork) AS ActualWork,
SUM(MSP_EpmAssignmentByDay_UserView.AssignmentRemainingWork) AS RemainingWork

FROM MSP_EpmResource_UserView 
     INNER JOIN ((MSP_EpmTask_UserView 
              INNER JOIN MSP_EpmProject_UserView 
          ON MSP_EpmTask_UserView.ProjectUID = MSP_EpmProject_UserView.ProjectUID) 

                  INNER JOIN MSP_EpmAssignment ON MSP_EpmTask_UserView.ProjectUID = MSP_EpmAssignment.ProjectUID 
          AND MSP_EpmTask_UserView.TaskUID = MSP_EpmAssignment.TaskUID) 

     ON MSP_EpmResource_UserView.ResourceUID = MSP_EpmAssignment.ResourceUID 
     INNER JOIN MSP_EpmAssignmentByDay_UserView 
     ON MSP_EpmAssignment.AssignmentUID = MSP_EpmAssignmentByDay_UserView.AssignmentUID 
    LEFT JOIN (SELECT MSP_TimeByDay_OlapView.CalendarMemberKeyMonth, MSP_TimeByDay_OlapView.FiscalMemberKeyPeriod, MSP_TimeByDay_OlapView.CalendarMemberKeyYear
FROM MSP_TimeByDay_OlapView
GROUP BY CalendarMemberKeyMonth, FiscalMemberKeyPeriod, CalendarMemberKeyYear)
AS totals
ON MONTH (MSP_EpmAssignmentByDay_UserView.TimeByDay) = totals.CalendarMemberKeyMonth

WHERE (MSP_EpmAssignmentByDay_UserView.TimeByDay BETWEEN '2016-01-01' AND '2016-12-31') 
AND totals.CalendarMemberKeyYear='2016'
GROUP BY

MSP_EpmResource_UserView.ResourceName,
totals.[FiscalMemberKeyPeriod]
ORDER BY
MSP_EpmResource_UserView.ResourceName