欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

sqlserver 分组取前n条记要

更新时间: 2014-01-05 02:07:10 责任编辑: Author_N1

 

sqlserver 分组取前n条记录
1.前言。
    这个有两种方法.1是用in,2是用row_number(),可根据情况来用。两种都可以。
2.举例。
方法1:
select  a.* from table1  a  where a.column1 in (select max(column1) from table1 group by a.column2,column3) 


方法2:
with nyr as (
select NYR,QYZX_DM,FXSP_XH,SPBM_DLJ,WBSP_GG,JGLX,JZJG,MAX(SJGX_SJ),
ROW_NUMBER() over (partition by nyr order by nyr) as 'rowno'

from WD_O_T_IC_SPSJ_FX 
where rowno=1
group by NYR,QYZX_DM,FXSP_XH,SPBM_DLJ,WBSP_GG,JGLX,JZJG 
order by NYR,QYZX_DM,FXSP_XH,SPBM_DLJ,WBSP_GG,JGLX,MAX(SJGX_SJ) desc
)
select *
from nyr
where rowno = 1

3.补充说明。
这里主要说下ROW_NUMBER()的用法。
ROW_NUMBER()实现了不用分组,自动在查询结果内部分组,求行号的功能。
如果"ROW_NUMBER() over()" 的括号内有partition by ,那么可以内部分组。如果没有,则是按照1,2,3的顺序依次获得行号。

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:07:10
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/5825/
本文WWW.DOC100.NET DOC100.NET版权所有。