SQL:我想根据一个标准比较三行数据,找出数值最小的那一行

SQL: I want to compare three rows of data based on a criterion and identify the one with the lowest value

我有一个检查 table 显示序列号、检查 (Characteristic) 和测试结果 (TestValue)。在示例 table 中,我为每个序列号显示了五项检查,但对于一组检查,我需要找到具有最低值的一项。我实际上需要 90 的绝对值减去 TESTVALUE 并确定最低的小数结果。我没有在我的示例 table 中包含该计算。我尝试了几种不同的方法,但最终都失败了,因为它们没有考虑多个标准,而只需要在特定的集合上进行计算。

这些数据进入报告,我尝试在 Report Builder 中这样做,但效果并不好。

TABLE:检查 列:序列、特征、测试值

以后请提供文本形式的示例数据,而不是图像。

请注意 left(Characteristic,5) ...这可能是一个问题

也许这会有所帮助

Select * 
      ,MinValue =  TestValue 
                  * case when sum(1) over (partition by Serial,left(Characteristic,5)) > 1 then 1 end
                  * case when TestValue = min(TestValue) over (partition by Serial,left(Characteristic,5)) then 1 end
 From YourTable

结果

通常在查找组中的最低值时,我会建议使用 ROW_NUMBER 函数来识别您感兴趣的行。但是,在这种情况下,子查询似乎是一个不错的选择。

子查询应该是这样的:

select serial, min(testvalue) as mintestvalue
from table
where characteristic like 'Angle%'
group by serial

现在您拥有了每个序列号所需的适当测试值。将此子查询左连接到 serial 号上的数据集,以将 mintestvalue 列包含在数据集中。