Vinodh Muthusamy Ответов: 3

Заказ по asc в SQL server


мне нужно отсортировать число от значения asscending. примерные данные таковы

463919493       
463919493 02
463919493 02
463919493 03
463919493 01
463919493 03
463919493 01


мне нужно получить вывод как
463919493       
463919493 01
463919493 01
463919493 02
463919493 02
463919493 03
463919493 03



и предположим, что если у нас есть алфавит с числом, то как отсортировать это число в asscending

HO463919493       
HO463919493 02
HO463919493 02
HO463919493 03
HO463919493 01
HO463919493 03
HO463919493 01


Нужно получить вывод как:

HO463919493       
HO463919493 01
HO463919493 01
HO463919493 02
HO463919493 02
HO463919493 03
HO463919493 03


Что я уже пробовал:

463919493       
463919493 02
463919493 02
463919493 03
463919493 01
463919493 03
463919493 01


мне нужно получить вывод как
463919493       
463919493 01
463919493 01
463919493 02
463919493 02
463919493 03
463919493 03



и предположим, что если у нас есть алфавит с числом, то как отсортировать это число в asscending

HO463919493       
HO463919493 02
HO463919493 02
HO463919493 03
HO463919493 01
HO463919493 03
HO463919493 01



HO463919493       
HO463919493 01
HO463919493 01
HO463919493 02
HO463919493 02
HO463919493 03
HO463919493 03

Maciej Los

Не публикуйте один и тот же контент! Пожалуйста, предоставьте информацию о вашем способе сортировки данных. Опишите то, что не удалось.

3 Ответов

Рейтинг:
2

Jochen Arndt

Вы не показали нам ни одного SQL-запроса.

Обычно вы должны добавить

ORDER BY [columnname] ASC
на ваш вопрос где имя_столбца это название вашей второй колонки. Потому что ASC это порядок сортировки по умолчанию, который можно опустить.

Вы также можете указать несколько столбцов или более сложные выражения. Видеть Предложение ORDER BY (Transact-SQL) | Microsoft Docs[^] для получения дополнительной информации.


Maciej Los

ОП хочет, чтобы текстовые данные тратились как числовые. Смотрите мой ответ.

Jochen Arndt

Хорошо. Но с его примерами данных это должен сделать простой порядок по второму столбцу. Первый столбец может быть добавлен к выражению для субсортировки. Но в его примерах этот столбец имеет уникальные данные.

Рейтинг:
1

Maciej Los

Если вы хотите рассматривать текстовые данные как числовые, вы должны преобразовать их. Например:

SELECT * 
FROM (
    SELECT 'HO463919493' AS F1, NULL AS F2
    UNION ALL       
    SELECT 'HO463919493', '02'
	UNION ALL       
    SELECT 'HO463919493', '02'
	UNION ALL       
    SELECT 'HO463919493', '03'
	UNION ALL       
    SELECT 'HO463919493', '01'
	UNION ALL       
    SELECT 'HO463919493', '03'
	UNION ALL       
    SELECT 'HO463919493', '01'
) AS T
ORDER BY CONVERT(INT, SUBSTRING(F1, 3, LEN(F1))) ASC, CONVERT(INT, F2) ASC


Примечание: приведенный выше пример предназначен для конкретных данных, где первые две буквы отклоняются во время преобразования.


Wendelius

Этого вполне достаточно.

Рейтинг:
1

Wendelius

Чтобы добавить к обоим решениям: Почему вы храните два отдельных значения в одном столбце в первую очередь? Ваши операции SQL были бы намного проще, если бы вы имели значения как в отдельных столбцах. Тогда вы можете просто заказать его, используя предложение ORDER BY, например

ORDER BY Col2 ASC, Col1 ASC