六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 685|回复: 0

Oracle分组取第一条数据

[复制链接]

升级  31%

83

主题

83

主题

83

主题

举人

Rank: 3Rank: 3

积分
293
 楼主| 发表于 2013-1-29 15:28:57 | 显示全部楼层 |阅读模式
对多数据进行分组排序后取每组第一条记录

SELECT *     FROM (SELECT ROW_NUMBER() OVER(PARTITION BY <PK_FINANCE_ACCOUNT_1> ORDER BY <amassdate> DESC) LEV,                  <hx_amass_liquid>.*             FROM <hx_amass_liquid>)    WHERE LEV = 1    ORDER BY <PK_FINANCE_ACCOUNT_2> DESC  
<PK_FINANCE_ACCOUNT_1> -- 分组列



<amassdate> -- 排序列



<hx_amass_liquid> -- 表名



<PK_FINANCE_ACCOUNT_2> -- 排序列



注:<hx_amass_liquid>.* -- 一定要有表名,否则会报“缺失表达式”错误



==========================================================



分组时不仅想取每组的第一条记录,还想取每组共有几条记录


SELECT *FROM (SELECT ROW_NUMBER() OVER(PARTITION BY PK_FINANCE_ACCOUNT ORDER BY amassdate DESC) LEV,                          count(0) over(partition by PK_FINANCE_ACCOUNT) cnt,                          hx_amass_liquid.* FROM  hx_amass_liquid) WHERE LEV = 1 ORDER BY PK_FINANCE_ACCOUNT DESC
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表