2017-01-22 80 views
1

我有如下表:如何僅使用SQL選擇每個組的最新版本?

TABLE sales 
| id | name | date  | amount | 
|----|------|------------|--------| 
| 1 | Mike | 2016-12-05 | 67.15 | 
| 2 | Mike | 2016-12-09 | 98.24 | 
| 3 | John | 2016-12-12 | 12.98 | 
| 4 | Mike | 2016-12-19 | 78.48 | 
| 5 | Will | 2016-12-19 | 175.26 | 
| 6 | John | 2016-12-22 | 14.26 | 
| 7 | John | 2016-12-23 | 13.48 | 

我試圖創建一個視圖將由名字列組,並只返回最反感量。它應該看起來像這樣:

TABLE sales_view 
| id | name | date  | amount | 
|----|------|------------|--------| 
| 4 | Mike | 2016-12-19 | 78.48 | 
| 5 | Will | 2016-12-19 | 175.26 | 
| 7 | John | 2016-12-23 | 13.48 | 

我不知道如何去做這件事。我想我會需要子查詢,但是我知道如果你嘗試在視圖中使用它們,SQL會發瘋。

回答

2

你可以使用一個元組,並通過爲最大(日期),與A組子查詢

select * from sales 
where (name, date) in (select name, max(date) 
         from sales 
         group by name) 
+0

那實際工作和SQL沒有在我嚷嚷着要使用視圖內的子查詢。謝謝。 – MakPo

+0

@MakPo以及如果我的回答是正確的,請將其標記爲已接受...看到這裏如何 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – scaisEdge

+0

我會的。這隻會讓我等上10分鐘,然後才能對它進行標記。 – MakPo