要在查询中排序的SQL语句

时间:2014-11-25 01:00:49

标签: mysql

我想开发允许查询中的子集的代码。我有三个字段“batchid”,“month”和“year”。每批可能有几个月和一年以上。我需要的最终订单是最高月份组合。

下表我希望说明这一点。

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语句写入这篇文章的事情所以我道歉希望这可能有意义。

1 个答案:

答案 0 :(得分: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 |
+-------+-------+------+