2013-10-11 70 views
1

我的目標是使用不同的一列,但返回所有的列。選擇不同的一列,但返回所有列

我的表是這樣的

id, name, year 

1, John, 2012 

2, Jake, 2012 

3, Jenna, 2013 

1, John, 2013 

我需要做id列不同,並返回所有的三列,以及不一樣的ID,我需要最新的記錄。

輸出我需要的是

id, name, year 

1, John, 2013 

2, Jake, 2012 

3, Jenna, 2013 

我已經試過這兩個命令

  1. 從sampletable選擇不同的編號,名稱,年份。 我會在所有行上做不同的處理。

  2. select * from sampletable group by id 我只會返回id列並刪除其他列。

回答

0

使用窗口和分析功能,您可以通過這一年劃分由ID排序的數據,並選擇了第一個結果:

SELECT id, name, year 
FROM 
(SELECT id, name, year, row_number() over (partition by id order by year desc) as r 
    FROM sampletable) S 
WHERE S.r = 1; 

再加上有其他排名功能,如rankdense_rank爲不同的選擇。

0

而不解析函數

 
    select t.id, t.name, t.year from t 
    join 
     (select id, max(year) year from t group by id) as S 
     on S.id=t.id and S.year = t.year 

;

相關問題