我知道如何在sql查询中使用MAX()
函数和GROUP BY
子句,但在我的情况下,我想要组的记录有点不同。如何在sql查询中获取连续记录条目的最大值?
,比如我有一个下表
HostName ModifyDate Sr No
-------------------------------------------
PC-1 2015-12-04 08:45:52.847 1
PC-1 2015-12-04 08:48:51.025 2
PC-2 2015-12-04 08:50:01.125 3
PC-2 2015-12-04 08:50:45.545 4
PC-2 2015-12-04 08:53:44.897 5
PC-1 2015-12-04 09:02:17.524 6
PC-2 2015-12-04 09:18:36.788 7
PC-2 2015-12-04 09:22:01.041 8
PC-1 2015-12-04 09:31:41.744 9
而结果应该是这样的
HostName ModifyDate Sr No
------------------------------------------
PC-1 2015-12-04 08:48:51.025 2
PC-2 2015-12-04 08:53:44.897 5
PC-1 2015-12-04 09:02:17.524 6
PC-2 2015-12-04 09:22:01.041 8
PC-1 2015-12-04 09:31:41.744 9
上述结果表明,连续主机名记录最高日纪录。你可以看到有3个参赛作品(SrNo 3,4,5),但我只拿到了第三个,这三个都是最新的。在前两个记录中也使用了相同的场景(SrNo1,2),我只取得了这两个记录中的最新记录。
问题是我不能采取最大日期记录。如果我使用MAX(ModifyDate)
和HostName
组,那么它将只返回两个最新的记录(Sr No 8和9)。我想获得每个连续HostName
条目的最大记录。
注意:我无法为其创建存储过程。我想通过单个sql语句获取该记录。表中没有Sr No字段。我只是为了理解这个案子而已。
这是一个经典的差距和是土地问题。你会发现很多解决方案。 – shawnt00