close
由於工作上的需求,想要抓取客戶最後一天的交易日, 比如: 一個客人在多家分公司都有帳號,我要抓到最後交易的那一筆客人的分公司與帳號資料
若是這樣,其實只需要 select ID,max(last_date) from table group by id 然後再根據id去join TABLE的其他資訊 即可
但業務邏輯是同一個客人的最後交易日在多家分公司可能會一樣!!! 這樣會抓到多筆,我只需要抓一筆,因此找到ORACLE有一個FUNCTION叫 first_value ()
因此我將sql修改為
select distinct id,
first_value(brno) over (partition by id order by LAST_DATE desc) brno,
first_value(cuno) over (partition by id order by LAST_DATE desc) cuno
from TABLE;
這樣就可以只抓取到LAST_DATE 大到小排序後的第一筆,若有相同LAST_DATE 也只會抓到第一筆~~
關鍵於: 隨機抓到第一筆的function叫做First_Value ,後面over (partition by 姓名) 是表示針對每個Name抓取第一筆資料
參考: http://bebooo.pixnet.net/blog/post/101812633-oracle資料庫的sql語法有只抓一筆資料的語法嗎
全站熱搜