Мне нужно получить некоторые данные из таблицы EMPLOYEES и создать новый столбец с именем недели, основанный на hire_date. Результаты затем должны быть отсортированы по дням недели (с понедельника по воскресенье), и вот где моя проблема.Сортировка по дням недели - декодирование возвращает null
Я решил использовать функцию декодирования, но похоже, что я делаю что-то неправильно.
Вот мой запрос
SELECT FIRST_NAME, LAST_NAME, HIRE_DATE, TO_CHAR(HIRE_DATE, 'DAY', 'NLS_DATE_LANGUAGE=ENGLISH') AS DAY_OF_WEEK FROM EMPLOYEES ORDER BY DECODE(DAY_OF_WEEK,'MONDAY',1,'TUESDAY',2,'WEDNESDAY',3,'THURSDAY',4,'FRIDAY',5,'SATURDAY',6,'SUNDAY',7)
Все работает хорошо, за исключением сортировки. Среда находится в начале, а остальное - в произвольном порядке.
Я немного изменил запрос, так что я мог видеть, как эта функция действительно работает.
SELECT FIRST_NAME, LAST_NAME, HIRE_DATE, TO_CHAR(HIRE_DATE, 'DAY', 'NLS_DATE_LANGUAGE=ENGLISH') AS DAY_OF_WEEK, DECODE(TO_CHAR(HIRE_DATE, 'D', 'NLS_DATE_LANGUAGE=ENGLISH'), 'MONDAY',1, 'TUESDAY',2, 'WEDNESDAY',3, 'THURSDAY',4, 'FRIDAY',5, 'SATURDAY',6, 'SUNDAY',7) AS DAY2 FROM EMPLOYEES ORDER BY DECODE(DAY_OF_WEEK, 'MONDAY',1, 'TUESDAY',2, 'WEDNESDAY',3, 'THURSDAY',4, 'FRIDAY',5, 'SATURDAY',6, 'SUNDAY',7)
Что-то вроде этого возвращается в колонке DAY2 номер 3 в среду и (null) для всего остального.
Это объясняет, почему сортировка не работает, но я до сих пор не знаю, почему это не работает, и где ошибка в запросе :)
Вы правы! Я не понимал, что после имен есть пробелы. Что касается аббревиатур, я думаю, что они достаточно хороши, поэтому я могу использовать их вместо полных имен :) Большое вам спасибо! – xyz124
Мне всегда нравится знать, почему ... объясняют это пробелы. – xQbert