现有表如下
id(number) 日期(date) score(number)
1 2009-3-1 100
2 2009-3-1 500
3 2009-3-1 300
4 2009-3-2 200
5 2009-3-7 400
6 2009-3-2 230
7 2009-3-4 220
我想得到这样的结果:过滤掉日期相同的记录,只要有日期是同一天,就取id是最大值的哪一行,如:
1 2009-3-1 100
2 2009-3-1 500
3 2009-3-1 300
同为2009年3月一日这一天,我就只取id=3的这一行。
--------------------------------------
因此,
上表的结果应该是:
id 日期 score
3 2009-3-1 300
5 2009-3-7 400
6 2009-3-2 230
7 2009-3-4 220
我用的的数据库是oracle
id(number) 日期(date) score(number)
1 2009-3-1 100
2 2009-3-1 500
3 2009-3-1 300
4 2009-3-2 200
5 2009-3-7 400
6 2009-3-2 230
7 2009-3-4 220
我想得到这样的结果:过滤掉日期相同的记录,只要有日期是同一天,就取id是最大值的哪一行,如:
1 2009-3-1 100
2 2009-3-1 500
3 2009-3-1 300
同为2009年3月一日这一天,我就只取id=3的这一行。
--------------------------------------
因此,
上表的结果应该是:
id 日期 score
3 2009-3-1 300
5 2009-3-7 400
6 2009-3-2 230
7 2009-3-4 220
我用的的数据库是oracle
SELECT number,date,number FROM
(SELECT ROW_NUMBER() OVER(PARTITION BY date ORDER BY ID DESC) RN ,A.* FROM YOURTABLE A)
WHERE RN=1
上面是对的。还有一种
select * from table join (select max(id) from table group by date) temp
on table.id = temp.id