Postgresql Custom Sorting - PullRequest
       23

Postgresql Custom Sorting

4 голосов
/ 02 апреля 2012

Я хочу отсортировать по столбцу, где я хочу, чтобы числа были ASC, но последние 2 строки всегда должны быть 0, а затем 1 (если они существуют)

Например:

  • 8
  • 6
  • 10
  • 0
  • 2
  • 1

становится

  • 2
  • 6
  • 8
  • 10
  • 0
  • 1

Как это возможно?

Ответы [ 2 ]

6 голосов
/ 02 апреля 2012

Я думаю, что самое ясное - это заказать оба по

CASE WHEN column_name = 0
     THEN 0
     WHEN column_name = 1
     THEN 1
     ELSE -1
 END

(который помещает все значения, кроме 0 и 1 перед 0, и 0 до 1) и на column_name (так что не- 0 , не- 1 значения отображаются в порядке).

Например:

SELECT column_name
  FROM table_name
 ORDER
    BY CASE WHEN column_name = 0
            THEN 0
            WHEN column_name = 1
            THEN 1
            ELSE -1
        END,
       column_name
;
1 голос
/ 02 апреля 2012
SELECT * 
FROM YOURTABLE
ORDER BY CASE YOURCOLUMN
         WHEN YOURCOLUMN=0 THEN 0
         WHEN YOURCOLUMN=1 THEN 1
         ELSE -99
         END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...