我有以下表格 - 简化了很多
Table - Tests
Test
A
B
C
D
E
F
G
H
Table - TestHistory
Test Result Version
A Pass 1
A Fail 2
B Pass 2
C Fail 1
C Pass 2
D Fail 1
D Fail 2
E Fail 1
我想获取上次运行失败(或任何状态)的测试列表。但是,也是找到它的版本。
因此,在上面的示例中,我希望返回:
A Fail 2
D Fail 2
E Fail 1
我尝试了几种方法
select Test, LastResult = IsNull((Select Top 1 Result From TestHistory Where Test = Tests.Test order by Version desc), 'NOT_RUN')
from Tests
它的作用是给我一个所有测试的列表,然后我必须通过并踢出我不想要的行(即不是失败)。这也没有给我它运行的版本。
我也试过这个:
select Version, TH.Test, Result
from TestHistory as TH inner join Tests as T on TH.Test = T.Test
where Result = 'Fail'
但是,然后我得到如下行:
Test Result Version
C Fail 1
我不想要那些,因为它不是Last Result。
在没有大量数据操作(或更糟糕的是,更多的数据库读取)之后,我该如何限制它以准确地提供我需要的东西?任何帮助,将不胜感激。谢谢!