免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4398 | 回复: 5
打印 上一主题 下一主题

求助,使用SYbase数据库先分组再排序最后取后两条数据的SQL [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-24 11:46 |只看该作者 |倒序浏览


如图所示,协议号(VERIFYAGRNO),账单号(RPTNO),出单日期(RPTDATE),一个协议号可对应多个账单号,出单日期就是数据生成的日期。
这里需要先根据VERIFYAGRNO分组,再按RPTDATE进行排序最后取排序后的最后两条数据(对应图中的红色框内的数据)。

比如在Oracle中可以使用分析函数  ROW_NUMBER()OVER(PARTITION BY 字段1 ORDER BY 字段2 DESC)  来实现。
Eg:
SELECT VERIFYAGRNO AS verifyagrno,RPT_NO AS rptNo,RPT_DATE AS rptDate
FROM (
   SELECT VERIFYAGRNO,RPT_NO,RPT_DATE,
      ROW_NUMBER()OVER(PARTITION BY VERIFYAGRNO ORDER BY RPT_DATE DESC) periodNo
   FROM T_CHECK_BILL
   WHERE VERIFYAGRNO IN ('121212','131313')
   ORDER BY RPT_DATE
)
WHERE periodNo <= 2

但是在Sybase中没有这个分析函数,本人对Sybase不太熟悉,请问各位大师,Sybase中有什么函数或者其他的方式实现吗?
能给出SYbase的SQL语句最好啊,先拜谢了。

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
2 [报告]
发表于 2013-01-24 15:09 |只看该作者
你是要选账单号的个数小于等于2的协议号吗?

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
3 [报告]
发表于 2013-01-24 15:11 |只看该作者
看你写的那个oracle的语句,感觉写的太复杂,应该有简答的

论坛徽章:
0
4 [报告]
发表于 2013-01-24 15:33 |只看该作者
sybase 没有row_number()函数,可以用如下的方式来实现
SELECT VERIFYAGRNO,RPT_NO,RPT_DATE
FROM T_CHECK_BILL a
where (select count(*) from T_CHECK_BILL b where a. VERIFYAGRNO = b. VERIFYAGRNO and a.RPT_NO < b.RPT_NO) <= 1

论坛徽章:
0
5 [报告]
发表于 2013-01-24 16:07 |只看该作者
回复 2# zhaopingzi


    是要分别找出协议号121212和131313对应账单号、出单日期等,但是最近两次插入数据库的,数据在每次插入数据库时会生成出单日期。

论坛徽章:
0
6 [报告]
发表于 2013-01-24 16:27 |只看该作者
回复 4# baiynije


    这位大师,你给的SQL能满足我的需求,谢谢您啦。小弟不才,想请教一下这个SQL的执行顺序,或者原理吧,看得有点懵,呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP