2014-11-25 139 views
0

我想開發代碼,將允許查詢中的子集內進行排序。我有三個字段「batchid」,「month」和「year」。每批可能有幾個月和一年以上。我需要的最終訂單是最高月份組合。SQL語句來查詢

下表我希望說明了這一點。

Batch Month Year 
5  12  2013 
     1  2014 
6  11  2013 
     3  2014 
4  1  2014 
     2  2014 

所要求的順序是

Batch Month Year 
5  12  2013 
     1  2014 
4  1  2014 
     2  2014 
6  11  2013 
     3  2014 

你可以看到每個批次進行排序以批處理的最新日期和每批責令該批次的最後日期。 我已經儘可能的一年而言,但無法弄清楚月份得到它。 第一個語句確定的最低和最高的日期。

我是新來這個論壇,並使用VBA沒有經歷過這件事,也沒有beanpole得到的SQL語句到這個職位,所以我道歉吶希望這可能是有意義的。

回答

0
SELECT t1.batch, t1.month, t1.year 
FROM tmp t1 
JOIN 
(SELECT batch, max(year*12+month) mord FROM tmp GROUP BY batch ORDER BY mord) t2 
ON t2.batch = t1.batch 
ORDER BY t2.mord, t1.year, t1.month 

產生

+-------+-------+------+ 
| batch | month | year | 
+-------+-------+------+ 
|  5 | 12 | 2013 | 
|  5 |  1 | 2014 | 
|  4 |  1 | 2014 | 
|  4 |  2 | 2014 | 
|  6 | 11 | 2013 | 
|  6 |  3 | 2014 | 
+-------+-------+------+