我必须为相同的id字段获取具有最长字符串值的行.
create table test(
id number,
test_data varchar2(20)
);
insert all
into test values (1,'aaa')
into test values (1,'a')
into test values (1,'abxw')
into test values (2,'aaa')
into test values (2,'tris')
select * from dual;
Run Code Online (Sandbox Code Playgroud)
我想要的输出是
1 abxw - 最新字符串
2个tris
我怎样才能得到所需的输出?我不知道.
伙计们如何使用光标.我们可以将光标用于此目的吗?有谁有想法吗?可能吗??
谢谢.
我喜欢使用分区来进行这类查询:
select id,test_data from (
select
id, test_data,
row_number() over( partition by id order by length(test_data) desc) as rnum
from
test
) where rnum=1
Run Code Online (Sandbox Code Playgroud)
http://www.sqlfiddle.com/#!4/66d4c/20
当然,关于这一点的好处是,如果您决定要另一个抢七(例如,按字母顺序),您只需要将其添加到您的order by子句中.顺便说一句,这不是一个坏主意,那样你的结果集就不会是非确定性的.
| 归档时间: |
|
| 查看次数: |
2903 次 |
| 最近记录: |