2012-06-26 2 views
0

У меня есть данные ниже образца.Условный заказ

AID Date  Title 
----- ---------- ------ 
1  2011-12-12 test1 
2  2011-12-12 test2 
2  2011-12-12 test2 
4  2011-12-12 test4 
5  2011-12-12 test5 
6  2011-12-13 test11 
7  2011-12-13 test12 
8  2011-12-13 test13 
9  2011-12-13 test14 
10  2011-12-13 test15 
11  2011-12-14 test15 
12  2011-12-14 test15 

Мне нужно из положить, как показано ниже, означает, что я хочу конкретной AID (5,10), в первую очередь order by date,aid.

AID Date  Title 
----- ---------- ------ 
5  2011-12-12 test5 
1  2011-12-12 test1 
2  2011-12-12 test2 
2  2011-12-12 test2 
4  2011-12-12 test4 
10  2011-12-13 test15 
6  2011-12-13 test11 
7  2011-12-13 test12 
8  2011-12-13 test13 
9  2011-12-13 test14 
11  2011-12-14 test15 
12  2011-12-14 test15 
+0

В целом считается плохой практикой иметь имя поля в вашей таблице, является такой же, как SQL зарезервированное слово (т.е. 'date'). SQL предоставляет способы обойти это, заключая имя поля в квадратные скобки, но это по-прежнему считается плохой практикой. Сказав это, я ценю, что у вас, возможно, не было выбора над дизайном стола. – Spudley

ответ

5
ORDER BY [Date], CASE WHEN AID IN (5,10) THEN 1 ELSE 2 END, AID; 
1
ORDER BY CASE WHEN (AID % 5) = 0 THEN (AID/5 -1) * 5 ELSE AID END 
+0

Это относится к специальному заказу на 15, 20, 25 и т. Д. Вы уверены, что это то, что нужно? Это также кажется излишне сложным, чем предлагаемое мной решение. –

+0

@ Аарон Бертран, ОП просто перечисляют некоторые данные образца. поэтому я предполагаю, что это правило распространяется и на 15,20,25 и т. д. Если нет, вы правы, вы отвечаете лучше всего. – EricZ

Смежные вопросы