- 论坛徽章:
- 0
|
如图所示,协议号(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语句最好啊,先拜谢了。 |
|