我有一个包含机器人ID的表[Robots]和一个[TestResults]表,该表具有[RobotId]的[Robots] FK
我的目标是获得[Robots]表中每个robotID的结果集,以及每个ID在[TestResults]中状态为“Active”、“Failed”的所有条目的总数和所有状态的总数,我一直坚持这种方法。
例如:
|RobotId 'R2-D2'|ActiveNum:8|FailedNum:12|TotalNum:20|
|RobotId 'C3P0'|ActiveNum:4|FailedNum:2|TotalNum:9|
我需要一个方法来遍历ID并执行这些查询,如下所示
Select RobotID from Robots Order by RobotID ASC
--iterate through each ID from above result set executing the three queries below
--Get total where test status is active
SELECT count(*) as ActiveNum
FROM TestResults
WHERE testStatus = 'active' AND RobotID = 'XX'
--Get total where test status is failed
SELECT count(*) as FailedNum
FROM TestResults
WHERE testStatus = 'failed' AND RobotID = 'XX'
--Get total of all status
SELECT count(*) as TotalNum
FROM TestResults
WHERE RobotID = 'XX'
1条答案
按热度按时间krugob8w1#
仅连接并有条件地求和,例如。
通常情况下,如果你发现自己在考虑SQL中的循环,你就走错了路。它是一种基于集合的语言,所以需要像这样对待。
注意
left join
,以防机器人没有测试结果,它仍然会显示在列表中。如果这不是所需的行为,请将其更改为inner join
。