Сортировка SQL с использованием Order by - PullRequest
0 голосов
/ 01 мая 2009

Не могли бы вы все помочь мне с этим?

В настоящее время у меня есть этот SELECT, который возвращает данные, упорядоченные таким образом

SELECT  DISTINCT gl.group_id,
        gl.group_name,
        gl.group_description,
        gl.status_code,
        gl.member_count,
        (
        SELECT  grpp.group_name
        FROM    test_group_relationship grel
        JOIN    test_group grpp
        ON      grel.parent_group_id = grpp.group_id
        WHERE   grel.child_group_id = gl.group_id
        ) AS parent_group_name,
        gl.group_name_key,
        gl.group_description_key
FROM    test_group gl
WHERE   gl.group_org_id = '3909'
        AND gl.group_name_key like '%' || 'GROUP' || '%'
ORDER BY
        gl.group_name_key, CONVERT(gl.group_name, 'WE8EBCDIC500')

Вывод ниже. Я попытался сделать отступ в столбцах для вставки данных.

GROUP_NAME                         GROUP_NAME_KEY

Add Group Basic Flow               ADD GROUP BASIC FLOW
Administrative Group               ADMINISTRATIVE GROUP
Amy Group 33                       AMY GROUP 33
Amy Test Group 1                   AMY TEST GROUP 1
another add group test from matt   ANOTHER ADD GROUP TEST FROM MATT

** Мой вопрос в FIELD GROUP_NAME -> как я могу сортировать данные, используя ORDER BY так что строчные буквы будут отсортированы перед прописными.

Ожидаемый результат: -

значение "еще один дополнительный тест группы из Мэтта" должно стоять на первом месте. вначале сортируются строчные буквы, а затем верхний регистр.


Смотри также:

Ответы [ 4 ]

1 голос
/ 01 мая 2009

попробовать:

ORDER BY UPPER (SUBSTR (GROUP_NAME, 1, 1)), SUBSTR (GROUP_NAME, 1, 1) DESC, UPPER (GROUP_NAME), GROUP_NAME DESC;

1 голос
/ 01 мая 2009

Преобразовать тип в поле в сопоставление с учетом регистра и упорядочить по нему asc

В вашем заказе добавьте

имя_группы COLLATE Latin1_General_CS_AS Asc

при условии, что ваши персонажи на английском; в противном случае заменить французский и т. д.

0 голосов
/ 01 мая 2009

Я не парень Oracle, но в зависимости от вашей версии Oracle, я считаю, что есть некоторые переменные сеанса, которые будут определять это для вас. Вы можете попробовать следующее:

SET ALTER SESSION SET nls_comp = двоичная;

SET ALTER SESSION SET nls_sort = GENERIC_M_CI;

0 голосов
/ 01 мая 2009

Просто добавьте BINARY к вашему заказу BY.

ORDER BY BINARY gl.group_name_key

Возможно, вам придется использовать DESC, иначе верхний регистр будет первым. Но тогда это также сортирует z-a.

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