ЗАКАЗАТЬ по объединенному имени в Oracle? - PullRequest
4 голосов
/ 22 июня 2011

У меня есть таблица USERS, из которой я получаю имя и фамилию сотрудника и распечатываю их как одно имя.Как правильно использовать ORDER BY для этих данных?

Вот что у меня есть:

SELECT l.OFFICE_NAME, (us.LAST_NAME || ' , ' || us.FIRST_NAME) AS "Employee Name"
FROM LOCAL_OFFICE l, USERS us
WHERE l.LOCAL_OFFICE_ID = us.LOCAL_OFFICE_ID
ORDER BY  l.OFFICE_NAME  --what do I place here?--

Я сделаю это через JOIN вместо более дорогого FROM, но как я могу заказатьпо названию в алфавитном порядке?

Ответы [ 4 ]

8 голосов
/ 22 июня 2011

Вы можете сказать:

ORDER BY office_name, "Employee Name"

Это работает в 11G, но, возможно, не в более старой версии Oracle.

6 голосов
/ 22 июня 2011
ORDER BY l.OFFICE_NAME, (us.LAST_NAME || ' , ' || us.FIRST_NAME) 
5 голосов
/ 22 июня 2011

Поскольку ваша конкатенация на самом деле не добавляет ничего нового, почему бы не просто

ORDER BY l.OFFICE_NAME, us.LAST_NAME, us.FIRST_NAME

Edit: если есть индексы USERS.LAST_NAME и / или USERS.FIRST_NAME, это будет быстрее, чем упорядочение по результату конкатенации

4 голосов
/ 22 июня 2011

Вы можете использовать:

ЗАКАЗАТЬ НА 1,2

Это не фантастически хорошая практика, но она работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...