SQL数据分组后取最大值或者取前几个值(按照某一列排序)
2014-07-09 16:07
525 查看
今日做项目的时候,项目中遇到需要将数据分组后,分组中的最大值,想了想,不知道怎么做,于是网上查了查,终于找到了思路,经过比较这个查询时目前用时最快的,其实还有别的方法,但是我觉得我们只掌握最快的方法就行 ,好了,不说废话了!
直接上内容吧:以下数据是通过
SELECT [CustomerCaseNo],[PaymentsTime] FROM [BOMSDatabase].[dbo].[BAL_paymentsSwiftInfo] where StoresNo='zq00000034' group by CustomerCaseNo,[PaymentsTime]
语句得到的,这个语句大家都会写了
![](http://img.blog.csdn.net/20140709161318211?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHl5ODI5OTAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
现在需要做的事,把这个数据按照[CustomerCaseNo]分组以后 取出PaymentsTime字段里面的最近时间,要做到这个,用下面的语句就可以实现
select * from( select StoresNo,[CustomerCaseNo],[PaymentsTime], ROW_NUMBER() over(partition by CustomerCaseNo order by [PaymentsTime] desc) as rowNum
from BAL_paymentsSwiftInfo where StoresNo='zq00000034') ranked where ranked.rowNum <= 1 order by ranked.CustomerCaseNo, ranked.PaymentsTime desc
当执行完红字部分的SQL语句,就出现如下结果
![](http://img.blog.csdn.net/20140709161045890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHl5ODI5OTAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
达到我的要求,对数据分组以后,取出分组里面时间最近的数据记录,用到的SQL函数为
ROW_NUMBER() over(partition by 分组字段order by 排序字段 desc)
直接上内容吧:以下数据是通过
SELECT [CustomerCaseNo],[PaymentsTime] FROM [BOMSDatabase].[dbo].[BAL_paymentsSwiftInfo] where StoresNo='zq00000034' group by CustomerCaseNo,[PaymentsTime]
语句得到的,这个语句大家都会写了
现在需要做的事,把这个数据按照[CustomerCaseNo]分组以后 取出PaymentsTime字段里面的最近时间,要做到这个,用下面的语句就可以实现
select * from( select StoresNo,[CustomerCaseNo],[PaymentsTime], ROW_NUMBER() over(partition by CustomerCaseNo order by [PaymentsTime] desc) as rowNum
from BAL_paymentsSwiftInfo where StoresNo='zq00000034') ranked where ranked.rowNum <= 1 order by ranked.CustomerCaseNo, ranked.PaymentsTime desc
当执行完红字部分的SQL语句,就出现如下结果
达到我的要求,对数据分组以后,取出分组里面时间最近的数据记录,用到的SQL函数为
ROW_NUMBER() over(partition by 分组字段order by 排序字段 desc)
相关文章推荐
- SQL数据分组后取最大值或者取前几个值(按照某一列排序)
- SQL数据分组后取最大值或者取前几个值(依照某一列排序)
- 【SQL精彩语句】按某一字段分组取最大(小)值所在行的数据
- SQL学习之查询技巧 查询第3的数据 用一条语句分组,排序 并查询某一排名
- sql 如何按时间排序 分组 并且取每组时间最大或最小的一条数据
- 【SQL精彩语句】按某一字段分组取最大(小)值所在行的数据
- SQL学习之查询技巧 查询第3的数据 用一条语句分组,排序 并查询某一排名
- 按某一字段分组取最大(小)值所在行的数据,如何按字段删除重复记录
- 按某一字段分组取最大(小)值所在行的数据
- SQL数据进行排序、分组、统计10技巧
- 按某一字段分组取最大(小)值所在行的数据
- 按某一字段分组取最大(小)值所在行的数据
- SQL Server 按某一字段分组取最大(小)值所在行的数据
- 按某一字段分组取最大(小)值所在行的数据
- 按某一字段分组取最大(小)值所在行的数据
- 按某一字段分组取最大(小)值所在行的数据
- 按某一字段分组取最大(小)值所在行的数据(转帖)
- 按某一字段分组取最大(小)值所在行的数据
- SQL数据进行排序、分组、统计10技巧
- 针对"按某一字段分组取最大(小)值所在行的数据"一文的深入讨论和研究