如何通过程序获得所有最新的成功测试?最新版本具有最高构建数字,并且成功 PASSED 和 OF CONCERN
我的表看起来像这样(我从原文中排除了一些列):
+----+---------+----------------+-------+-----------+---------+
| ID | Test | Program | Build | Result | Tester |
+----+---------+----------------+-------+-----------+---------+
| 1 | 1 | Mag. & Speech | 1825 | PASSED | Dale |
| 2 | 2 | Scr. Reader | 1820 | PASSED | Aadarsh |
| 3 | 2 | Scr. Reader | 1821 | PASSED | Tony |
| 4 | 2 | Scr. Reader | 1824 | PASSED | Tony |
| 5 | 2 | Mag. & Speech | 1820 | PASSED | Colin |
| 6 | 2 | Mag. & Speech | 1821 | FAILED | Dale |
| 7 | 2 | Mag. & Speech | 1822 | OF CONCERN| Tony |
| 8 | 2 | Mag. | 1820 | PASSED | Steven |
| 9 | 3 | Scr. Reader | 1820 | NOT TESTED| Aadarsh |
+----+---------+----------------+-------+-----------+---------+
结果我想得到一行( ID )1,4,7,8。如您所见,没有任何程序具有多个相同的测试。
修改 向表中添加了一些缺少的信息。 可悲的是,我不再有查询了,我试过,但是我没有在 Where 和 Order By 中走得很远。
答案 0 :(得分:2)
此查询应该可以解决问题
SELECT t3.*
FROM (
SELECT t1.ID,
MAX(t1.Build) as Build
FROM table_name t1
WHERE LOWER(t1.Result) NOT IN( 'n/a', 'not completed', 'not tested' )
GROUP BY t1.Test, t1.Program
) t2
INNER JOIN table_name t3
ON t3.ID = t2.ID
AND t3.Build = t2.Build;
不幸的是,由于受限制,它有点复杂。
请用正确的名称
替换table_name(在2个地方)