2012-02-09 2 views
1

Рассмотрим, что столбец1 в таблице имеет значения «A» или «B» или null. если столбец1 имеет значение «А», запрос выбора должен быть выполнен , упорядоченный по столбцу2, иначе запрос выбора должен быть выполнен , упорядоченный по столбцу3., используя два разных порядка по операторам в одном запросе

Не могли бы вы помочь мне выполнить это требование с помощью одного запроса.

ответ

8

Просто догадайтесь, их необходимо проверить!

select *, decode (column1, 'A', column2, column3) as field_for_order 
from your_table 
order by field_for_order 
+4

Вы можете поместить это декодирование непосредственно в предложение 'order by'. Нет необходимости в дополнительной колонке. –

+0

+1, чистый подход. – danihp

+3

+1 Может также использовать выражение ANSI CASE: 'порядок по каждому столбцу1, когда 'A', а затем column2 else column3 end' –

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