Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取最后一个唯一行_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql 获取最后一个唯一行

Sql 获取最后一个唯一行,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我甚至试着写下这个问题也无法动脑 如果我有一张名为“WaitTable”的桌子,就像这样: Id StartTime EndTime ShopName Request WaitTime ------------------------------------------------------------------------------------------------- 1 2013-08-24 19:30

我甚至试着写下这个问题也无法动脑

如果我有一张名为“WaitTable”的桌子,就像这样:

Id  StartTime           EndTime             ShopName        Request    WaitTime
-------------------------------------------------------------------------------------------------    
1   2013-08-24 19:30    2013-08-24 19:45    ClothesShop1    1          10
2   2013-08-24 19:30    2013-08-24 19:45    ClothesShop1    2          15
3   2013-08-24 19:30    2013-08-24 19:45    ClothesShop1    3          3
4   2013-08-24 19:45    2013-08-24 20:00    ClothesShop1    1          12
5   2013-08-24 19:45    2013-08-24 20:00    ClothesShop1    2          17
我想获取所有最后的唯一请求,以获取它们最后记录的等待时间

例如,我想返回:

Id  StartTime           EndTime             ShopName        Request     WaitTime
-------------------------------------------------------------------------------------------------    
3   2013-08-24 19:30    2013-08-24 19:45    ClothesShop1    3           3
4   2013-08-24 19:45    2013-08-24 20:00    ClothesShop1    1           12
5   2013-08-24 19:45    2013-08-24 20:00    ClothesShop1    2           17

您可以使用
行编号()
函数执行此操作:

SELECT *
FROM (SELECT *,ROW_NUMBER() OVER(PARTITION BY Request ORDER BY Id DESC)'RowNum'
      FROM YourTable
      )sub
WHERE RowNum = 1
演示:

分区依据
定义将重新开始编号的组。也就是说,
Request
的每个值都将从1开始编号并向上编号

ORDER BY
定义如何对
行编号()进行排序

您可能希望按StartTime DESC排序,但这取决于您的数据