Query -Порядок сортировки в SQL Proc
SELECT B.TYPE,
B.TYPE_VAL,
B.COMP,
B.start,
B.end,
B.lt,
B.modify
FROM table B
WHERE B.start <= sysdate
AND B.end >= sysdate
AND TRIM(B.type_val) IN
('111-AAA')
ORDER BY B.type_val,
B.type,
B.comp DESC;
ВЫВОД
+------+----------+------+-----------+------------+----+-----------------+
| TYPE | TYPE_VAL | COMP | START | END | LT | MODIFY |
+------+----------+------+-----------+------------+----+-----------------+
| AS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| AS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 68 | 3/8/2016 0:34 |
| BS | 111-AAA | ** | 6/16/2015 | 6/16/2015 | 7 | 6/16/2015 10:32 |
| CS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| CS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| HS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| HS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| MS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| MS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| OS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| OS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| PS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| PS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| S | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| S | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| VS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| VS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
+------+----------+------+-----------+------------+----+-----------------+
Если вы заметили данные тянет в виде latest one first then older one
.
Для, например, для TYPE AS
-
| AS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| AS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 68 | 3/8/2016 0:34 |
Последние данные 5/10/2016 является то есть первый, а затем 3/8/2016. (MM/DD/YY формат)
Но есть одно исключение здесь, для ТИПА PS
- 3/8/2016 is above 5/10/2016
в отличие от всех остальных.
| PS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| PS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
По моим сведениям последнего один в идеале должен быть на вершине, если порядок сортировки одинаков (TYPE, TYPE_VAL и CO не одинаковы, поэтому нет заказа).
Мой вопрос здесь - Почему эта конкретная запись тянется в обратном порядке? Разве это не похоже на то, как все остальные миллионы записей вытягиваются? Должно быть НЕКОТОРЫЕ ОПРЕДЕЛЕННЫЕ причины, почему это происходит.
Я знаю, что большинство из вас ссылается на то, что Oracle не имеет особого способа возврата строк, но здесь это не так.
http://stackoverflow.com/questions/899514/default-row-ordering-for-select-query-in-oracle – Mottor