我想开发允许查询中的子集的代码。我有三个字段“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语句写入这篇文章的事情所以我道歉希望这可能有意义。
答案 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 |
+-------+-------+------+