是这样的,我有下列的一个结果集
------------------------------------------------------------------------------------
CYEA CM BDATE FDATE HRID HOUSEID BEGINDATE MONEY ISNEW
---- -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
2008 1 01-1月 -08 31-1月 -08
2008 2 01-2月 -08 28-2月 -08
2008 3 01-3月 -08 31-3月 -08
2008 4 01-4月 -08 30-4月 -08
2008 5 01-5月 -08 31-5月 -08
2008 6 01-6月 -08 30-6月 -08
2008 7 01-7月 -08 31-7月 -08
2008 8 01-8月 -08 31-8月 -08
2008 9 01-9月 -08 30-9月 -08 61 91 11-9月 -08 1000 1
2008 9 01-9月 -08 30-9月 -08 32 91 09-9月 -08 999 0
2008 9 01-9月 -08 30-9月 -08 31 91 09-9月 -08 800 0
2008 9 01-9月 -08 30-9月 -08 2 91 08-9月 -08 600 0
2008 9 01-9月 -08 30-9月 -08 1 91 08-9月 -08 500 0
2008 10 01-10月-08 31-10月-08
2008 11 01-11月-08 30-11月-08
2008 12 01-12月-08 31-12月-08
--------------------------------------------------------------------------------------
可以看出,我是想做出个报表
看上面,属于9月的有很多条(ps:因为数据少,所以别的月份没有,按说别的月份也应该像9月这种情况)
我现在像取出12条数据,就是1-12月的情况,以9月为例,9月的数据应该是HRID=61那条,也就是想要的是按HRID desc,BEGINDATE desc得到的第一条记录....所有1-12月这12条记录的内容都是相应月内按HRID desc,BEGINDATE desc得到的第一条记录,
不知道我说清楚没....
望告之....sql功底实在差了些,汗颜...
------------------------------------------------------------------------------------
CYEA CM BDATE FDATE HRID HOUSEID BEGINDATE MONEY ISNEW
---- -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
2008 1 01-1月 -08 31-1月 -08
2008 2 01-2月 -08 28-2月 -08
2008 3 01-3月 -08 31-3月 -08
2008 4 01-4月 -08 30-4月 -08
2008 5 01-5月 -08 31-5月 -08
2008 6 01-6月 -08 30-6月 -08
2008 7 01-7月 -08 31-7月 -08
2008 8 01-8月 -08 31-8月 -08
2008 9 01-9月 -08 30-9月 -08 61 91 11-9月 -08 1000 1
2008 9 01-9月 -08 30-9月 -08 32 91 09-9月 -08 999 0
2008 9 01-9月 -08 30-9月 -08 31 91 09-9月 -08 800 0
2008 9 01-9月 -08 30-9月 -08 2 91 08-9月 -08 600 0
2008 9 01-9月 -08 30-9月 -08 1 91 08-9月 -08 500 0
2008 10 01-10月-08 31-10月-08
2008 11 01-11月-08 30-11月-08
2008 12 01-12月-08 31-12月-08
--------------------------------------------------------------------------------------
可以看出,我是想做出个报表
看上面,属于9月的有很多条(ps:因为数据少,所以别的月份没有,按说别的月份也应该像9月这种情况)
我现在像取出12条数据,就是1-12月的情况,以9月为例,9月的数据应该是HRID=61那条,也就是想要的是按HRID desc,BEGINDATE desc得到的第一条记录....所有1-12月这12条记录的内容都是相应月内按HRID desc,BEGINDATE desc得到的第一条记录,
不知道我说清楚没....
望告之....sql功底实在差了些,汗颜...
select *
from
(
select t.*,
row_number over (partition by to_char(FDATE,'yyyy-mm') order by HRID desc,BEGINDATE desc) jj
)
where jj=1试试这个,我没试过
上面少写了个from
select *
from
(
select t.*,
row_number over (partition by to_char(FDATE,'yyyy-mm') order by HRID desc,BEGINDATE desc) jj
from tab t
)
where jj=1试试这个
SELECT *
FROM (SELECT T.*,
ROW_NUMBER OVER(PARTITION BY CYEA, CM ORDER BY HRID DESC, BEGINDATE DESC) RN
FROM YOUR_TABLE T)
WHERE RN = 1;
SELECT *
FROM (SELECT T.*,
ROW_NUMBER() OVER(PARTITION BY CYEA, CM ORDER BY HRID DESC, BEGINDATE DESC) RN
FROM YOUR_TABLE T)
WHERE RN = 1;
from (select *,
row_number() over(partition by cm order by HRID desc ,BEGINDATE desc) rn
from tablename)
where rn = 1