2014-11-25 2 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 | 
+-------+-------+------+ 
Смежные вопросы