分析函數 選最大值問題

[复制链接]
查看11 | 回复5 | 2012-12-1 17:12:56 | 显示全部楼层 |阅读模式
本帖最后由 sniper_bullet 于 2012-12-5 09:39 编辑
fact_odr_no
send_dateresult
aaaaaa
20121110 p
aaaaaa
20121103 F
bbbbbb
20121115 p
bbbbbb
20121103 F
想得到:
aaaaaa
20121115 p
bbbbbb
20121110 p
比如現在又上面的一個結果集,現在需要按fact_odr_no分組,取得最大日期send_date 對應的send_date和result,如果不用subquery,用分析函數來實現。
試著用max,first之類的都會得到類似:
aaaaaa
20121110p
aaaaaa
20121110F
bbbbbb
20121115p
bbbbbb
20121115F
這樣的結果。球求解答,thks


回复

使用道具 举报

千问 | 2012-12-1 17:12:56 | 显示全部楼层
用max,first之類的。。。你把group by加上啊。。。
回复

使用道具 举报

千问 | 2012-12-1 17:12:56 | 显示全部楼层
本帖最后由 Nian_jun 于 2012-12-5 10:08 编辑
结果集 反了吧
aaaaaa
20121110 p
bbbbbb
20121115 p
不用分析函数
witht as(
select 'aaaaaa' fact_odr_no,20121110 send_date,'p' result from dual
union all
select 'aaaaaa',20121103,'f' from dual
union all
select 'bbbbbb',20121115,'p' from dual
union all
select 'bbbbbb',20121103,'F' from dual
)
select * fromt where (fact_odr_no, send_date)in (select fact_odr_no,max(send_date) from t group by fact_odr_no)
复制代码
回复

使用道具 举报

千问 | 2012-12-1 17:12:56 | 显示全部楼层


好吧 我刚知道Subquery 是子查询的意思
回复

使用道具 举报

千问 | 2012-12-1 17:12:56 | 显示全部楼层

select fact_odr_no,

max(send_date),

max(result) keep(dense_rank last order by send_date) result
from t
grour by fact_odr_no;
回复

使用道具 举报

千问 | 2012-12-1 17:12:56 | 显示全部楼层
本帖最后由 sniper_bullet 于 2012-12-5 13:10 编辑
bell6248 发表于 2012-12-5 10:35
select fact_odr_no,

max(send_date),

max(result) keep(dense_rank last o ...

udfrog 還有版主 說的正確,分析函數要學會靈活運用啊,謝謝各位。我平時使用分析函數很少和group by 混搭。以後多多練習,多多請教。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行