http://tw.knowledge.yahoo.com/question/question?qid=1010050304974
抓最大最小其實是很簡單的,用簡單的min / max加上group by就可以
Select 姓名,MAX(日期) from table GROUP BY 姓名
Select 姓名,MIN(日期) from table GROUP BY 姓名
至於隨機,Oracle有一個隨機抓到第一筆的function叫做First_Value
他會回傳找到的第一筆
不過用法稍微比較複雜,你可能得去研究一下analytic function的語法
我給你的語法如下,你把中文改回你的table column name應該是可以執行的
select distinct 姓名,first_value(日期) over (partition by 姓名)
from table
其中後面over (partition by 姓名) 是表示針對每個Name抓取第一筆資料,資料本身不排序,所以等於是隨機抓一筆
變形一下,也可以做到跟max/min group by 一樣的結果
select distinct 姓名,first_value(日期) over (partition by 姓名 order by 日期 )
from table
等於抓最小 Select 姓名,MIN(日期) from table GROUP BY 姓名
因為在後面有家上Order by 日期,所以會抓取每個Name的最小那筆
同理
select distinct 姓名,first_value(日期) over (partition by 姓名 order by 日期 desc ) from table
等於抓最大 Select 姓名,MAX(日期) from table GROUP BY 姓名
稍微有點複雜,如果看不懂,這可能你得去看一下書了
留言列表