Я хочу отсортировать этот список - PullRequest
0 голосов
/ 28 сентября 2019

Я хочу отсортировать по списку ниже

Текущий вывод:

+ Q1-2015
+ Q1-2016
+ Q1-2017
+ Q1-2018
+ Q1-2019
+ Q2-2015
+ Q2-2016
+ Q2-2017
+ Q2-2018
+ Q2-2019

Ожидаемый вывод:

+ Q1-2015
+ Q2-2015
+ Q3-2015
+ Q4-2015
+ Q1-2016
+ Q2-2016
+ Q3-2016
+ Q4-2016

Как мне достичь желаемого результата?

Ответы [ 2 ]

4 голосов
/ 28 сентября 2019

Вы можете отсортировать компоненты квартала и года на двух отдельных уровнях:

SELECT *
FROM yourTable
ORDER BY
    RIGHT(col, 4),  -- sort first by year component
    LEFT(col, 2);   -- then sort by quarter within a given year

Демо

0 голосов
/ 28 сентября 2019

Вы можете использовать функции substring, charindex и len вместе с логикой, разделяющейся на дефис и после дефиса, и лучше привести к типу int для правильного упорядочения для других случаев (, даже если нет необходимости втолько четыре четверти, как в этом случае ):

 order by cast(substring(col0,2,charindex('-',col0)-2) as int),
          cast(substring(col0,charindex('-',col0)+1,len(col0)) as int)

Демо

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