Sql 获取最后一个唯一行
我甚至试着写下这个问题也无法动脑 如果我有一张名为“WaitTable”的桌子,就像这样: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
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排序,但这取决于您的数据