2017-01-11 2 views
-2

Следующие данные случайным образом извлекаются из таблицы SQL, и я хочу, чтобы данные сортировались в следующем порядке. Как я буду писать SQL-запрос для него?SQL Sort Sorter

Image

Edit: Я хочу заказать пролетели как ниже изображения.

Image2

+0

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking -a-question/285557 # 285557 –

+1

Какая СУБД вы используете? Postgres? Oracle? –

+0

'ORDER BY" Desc "' – jarlh

ответ

1

Это следует сделать это: (SQL Server, MySQL)

SELECT [DESC], SortOrder] 
FROM MyTable 
ORDER BY [DESC] DESC 

Позвольте мне знать.

+0

, это должно решить вашу проблему правильно ?! –

+0

Проверьте второе изображение. Я хочу Desc в ручном порядке. – Tud

1

Хммм. , ,

order by length(desc) desc 

Примечание: desc зарезервированное слово практически во всех базах данных, так что это плохой выбор для столбца. Кроме того, length() можно назвать len() в некоторых базах данных.

Это упорядочивает по длине первого столбца в порядке убывания. Это, по-видимому, ваш порядок сортировки на основе выборочных данных.

+0

См. Второе изображение. Я хочу получить результат. – Tud

1

Попробуйте это:

SELECT [DESC] 
FROM MyTable 
ORDER BY [DESC], 
     CASE WHEN LEN([DESC]) - LEN(REPLACE([DESC],' ','')) = 0 THEN 1 
       WHEN LEN([DESC]) - LEN(REPLACE([DESC],' ','')) = 1 THEN 2 
       WHEN LEN([DESC]) - LEN(REPLACE([DESC],' ','')) = 2 THEN 3 
       ELSE 4 
     END 
+0

Это сортировка правильно, но я хочу, чтобы она сортировалась в другом порядке. Как показано на рисунке, 1-й приходит XXXXX, затем YYYYY. Я хочу ГГГГ, затем XXXX, тогда может быть ZZZZ, затем AAAA, затем CCCC и т. Д., Поэтому это означает, что поле sortorder со значениями = 2 может иметь ручной порядок. Как мне это достичь. Я добавил еще один рисунок, чтобы получить четкое изображение. – Tud

+0

См. Второе изображение. Как достичь этой сортировки? – Tud

+0

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