【发布时间】:2019-01-30 21:01:02
【问题描述】:
我无法在查询中获得正确的汇总结果。我试图按人,按日期按工作类型总结所有结果。当我完整地运行查询时,我的 SUM 结果是天文数字。
我使用的表和字段是:运算符 (OprExtID) 和 vwProductionDataForTouchReporting (Opr, Extract)。请注意,我暂时删除了允许“按工作类型”分组的表/字段和联接,因为这些联接导致我的总和数字很高。
在我重新添加这些连接之前,我想我需要使用子查询来总结我的结果,但是当我尝试它时遇到了错误。
我收到“'.' 附近的语法错误”。错误。关于我做错了什么的任何想法。
这是我当前的查询:
SELECT CONCAT(OP.OprExtID,'_CSIMAGS') AS Processor, Convert(VARCHAR(8), VT.StartDateTime, 112) AS [Processed Date], VT.Extract AS [Completed]
FROM dbo.Operators OP
INNER JOIN (SELECT OP.Operator, SUM(dbo.VT.Extract) as Completed
FROM VT GROUP BY VT.OPR) dbo.vwProductionDataForTouchReporting VT
ON OP.Operator = VT.Opr
GROUP BY VT.EXTRACT, CONCAT(OP.OprExtID,'_CSIMAGS'), Convert(VARCHAR(8), VT.StartDateTime, 112)
例如:使用以下结果,我希望查询给我以下结果:
示例表运算符: OprExtID 0012385
示例表(视图)vwProductionDataForTouchReporting StartDateTime,Opr,提取 2019-01-03,0012385,15 2019-01-03,0012385,87 2019-01-04,0012385,12 2019-01-04,0012385,7
查询结果: 处理日期,处理器,完成 2019-01-03,0012385,102 2019-01-04,0012385,19
关于我在这里缺少什么的任何提示?
【问题讨论】:
-
您确实应该将问题简化为两个或三个表,以及示例数据和所需的结果。不过,一般的解决方案是聚合before加入。
-
在没有样本数据和预期结果的情况下无法为您提供帮助。
-
您在哪个版本的 SQL Server 上运行?
-
此服务器正在运行 SQL 2016 SP2 CU4 Enterprise。
-
@GordonLinoff 是的,这就是我的目标,在加入之前进行聚合,它只是适当地应用子查询并知道我需要从内部切换到左的连接。我认为问题在于我引用的 VT 表,因为这是 Extract 列结果的来源。我不确定我是否正确解释了您的简化声明。
标签: sql sql-server