Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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 server 具有多条记录的TSQL连接问题_Sql Server_Tsql_Stored Procedures_Sql Server 2012 - Fatal编程技术网

Sql server 具有多条记录的TSQL连接问题

Sql server 具有多条记录的TSQL连接问题,sql-server,tsql,stored-procedures,sql-server-2012,Sql Server,Tsql,Stored Procedures,Sql Server 2012,我有一个很大的查询,用来获取一个人正在从事的各种项目的统计数据。其中一个原因是本周一个人将参加培训课程的小时数 COALESCE ((SELECT Cast(s.nonprodhrs AS DECIMAL(10, 2)) AS '@count' FROM dbo.BS_TrainingEvent_Segments AS s INNER JOIN dbo.B

我有一个很大的查询,用来获取一个人正在从事的各种项目的统计数据。其中一个原因是本周一个人将参加培训课程的小时数

COALESCE ((SELECT    Cast(s.nonprodhrs AS DECIMAL(10, 2)) AS '@count'
                                FROM     dbo.BS_TrainingEvent_Segments AS s
                                INNER JOIN dbo.BS_Training_Trainers AS tr
                                ON tr.segmentID = s.teSegmentID
                                WHERE s.segmentDate >= @StartOfWeek AND s.segmentDate <= @EndOfWeek
                                AND tr.trainerEmpID = t.EmpID
                                ), 0) AS '@hoursThisWeek'
我遇到的问题是Training_Trainers表上的内部联接。有多条记录具有相同的segmentID,该记录抛出的错误子查询返回的值超过1。当子查询出现时,这是不允许的


是否有其他方法可以在不使用连接的情况下完成此操作,或者以正确的方式调整它?

我不知道您在做什么,但请尝试此方法。看起来您只需要小时数:


CastSUMs.nonprodhrs为小数10,2..

也许您可以使用select。。。从存在的片段中,从培训师中选择1-这里是什么样的结构而不是连接?正如您所说,子查询可以返回多个记录。更改您的查询,使其只返回您的业务规则规定它应该返回的一条记录。好的,小时工作正常,我可以在有单个段的情况下得到它。这就是问题所在。它在一个segmentID上连接,但是它连接的表有同一个segmentID的多个实例,这就是它抛出错误的原因我不知道什么是segment,什么是trainer,为什么有很多segment,为什么要连接这些表。我不知道你的数据,我不知道你想要的输出。我只知道子查询不会让您返回超过1个值。这就是为什么我建议您在子查询中聚合数据,以便只得到一个值。我认为George是对的。由于您正在尝试查找某人在培训课程中花费的小时数,因此您应该使用SUM将所有小时相加,得出总小时数。如果精度很重要,您可能希望转换为十进制,然后求和。