SQL 为每个“x”选择 TOP 1,其中 y = z

我有一个表格,其中列出了几台带有状态的机器。
示例:

MachineName | MyDate              | State    | other...
Machine1    | 2021-02-05 10:00:00 | unlocked | ....
Machine2    | 2021-02-05 12:00:00 | locked   | ....
Machine1    | 2021-02-03 11:04:00 | unlocked | ....
Machine4    | 2021-02-09 13:06:00 | unlocked | ....
Machine1    | 2021-02-05 09:00:04 | locked   | ....

我想要的是一个包含所有机器的数组

Machine 1
Machine 2
Machine 3

最后一次锁定机器所在行的整行。 所以它应该只选择锁定状态,然后在按 DateTime 对它们进行排序后选择它们的 TOP 1。然后根据机器名称进行排序。

我现在试过这个:

SELECT
MachineName  
MAX(MyDate)
FROM MyDatabase
Where State LIKE  'locked%'
GROUP BY  MachineName
ORDER BY  MachineName DESC

这工作正常,但前提是我不需要“其他”值。

如何获取“其他”列。当我将它们添加到 Select 时,我需要将它们添加到 Group by,然后它不再起作用了...

keke0328 回答:SQL 为每个“x”选择 TOP 1,其中 y = z

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1646.html

大家都在问