Как отсортировать запрос с помощью concat? - PullRequest
0 голосов
/ 29 марта 2019

Я хочу отсортировать запрос по дате, например 2018-01, 2018-02, .... Но я не получаю правильный результат

Это то, что я пробовал.

select 

concat(YEAR(trn.date), '-', MONTH(trn.date)) as date_result


FROM ....

ORDER BY date_result

Результат:

date_result
2018-1
2018-10
2018-11
2018-12
2018-2

Ответы [ 5 ]

2 голосов
/ 29 марта 2019
select 
concat(YEAR(trn.date), '-', MONTH(trn.date)) as date_result
FROM yourtablename
ORDER BY YEAR(trn.date),MONTH(trn.date) order  by date_result desc
2 голосов
/ 29 марта 2019

Вы должны указать порядок сортировки, например, "asc" или "desc".Таким образом, запрос должен выглядеть следующим образом: выберите

concat (YEAR (trn.date), '-', MONTH (trn.date)) как date_result

FROM ....

ORDER BY date_result desc

1 голос
/ 29 марта 2019

Функция MONTH возвращает целочисленное значение. Поэтому вы теряете ведущие нули. Вы можете либо привести к varchar и добавить начальный ноль, либо просто выбрать месяц, используя SUBSTRING.

Раствор с отливкой:

SELECT concat(YEAR(trn.DATE), '-', RIGHT('0' + CAST(MONTH(trn.date) AS varchar(2)),2) ) as date_result
FROM ....
ORDER BY trn.DATE;

Решение с подстрокой:

SELECT concat(YEAR(trn.DATE), '-', SUBSTRING(trn.date,6,2)) as date_result
FROM ....
ORDER BY trn.DATE;
1 голос
/ 29 марта 2019

Если вы хотите только отсортировать свой результат, а не изменять его с 2018-1 на 2018-01, тогда вы можете использовать один запрос:

SELECT 
    concat(YEAR(trn.DATE), '-', MONTH(trn.DATE)) AS date_result
FROM ....
ORDER BY trn.DATE;

Если вы хотите изменить свой результат на 2018-01, используйте этот запрос:

SELECT 
    DATE_FORMAT(trn.DATE, '%Y-%m') AS date_result
FROM ....
ORDER BY trn.DATE;
1 голос
/ 29 марта 2019

Добавить YEAR(trn.date),MONTH(trn.date) в порядке по пункту

select 
concat(YEAR(trn.date), '-', MONTH(trn.date)) as date_result
FROM yourtablename
ORDER BY YEAR(trn.date),MONTH(trn.date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...