我想将当前行与下一行的值进行比较。SQL有LEAD
和LAG
函数来获取下一个和前一个值,但由于我正在使用SQL Server 2008,所以无法使用它们。
那么我该怎么办呢?
我有一个包含输出的表。
+----+-------+-----------+-------------------------+
| Id | ActId | StatusId | MinStartTime |
+----+-------+-----------+-------------------------+
| 1 | 42 | 1 | 2014-02-14 11:17:21.203 |
| 2 | 42 | 1 | 2014-02-14 11:50:19.367 |
| 3 | 42 | 1 | 2014-02-14 11:50:19.380 |
| 4 | 42 | 6 | 2014-02-17 05:25:57.280 |
| 5 | 42 | 6 | 2014-02-19 06:09:33.150 |
| 6 | 42 | 1 | 2014-02-19 06:11:24.393 |
| 7 | 42 | 6 | 2014-02-19 06:11:24.410 |
| 8 | 42 | 8 | 2014-02-19 06:44:47.070 |
+----+-------+-----------+-------------------------+
我想要做的是,如果当前行状态为1,并且下一行状态为6,并且两次时间相同(分钟级别),则我想获取状态为1的行。
例如:Id 6行状态为1,Id 7行状态为6,但两个时间相同,即2014-02-19 06:11
所以我想获取状态为1的行或id,即id 6。
convert()
的所有格式,所以我倾向于找到其他解决方案(例如答案中的解决方案)。 - Gordon Linoff