Я пытаюсь создать отчет о ежемесячных диаграммах продаж. введите описание изображения здесь

Наша метка месяца не соответствует формату. мне нужен ярлык, как этот 1-й месяц, 2-й месяц, 3-й месяц, 4-й месяц, .......

Наш запрос mysql

SELECT  concat('Month ' ,(@count:=@count+1)) as month,sum(grand_total) as amount FROM tra_inv_hd WHERE   fi_yr =1 group by MONTH(trninvhddt) order by trninvhddt asc 

Условие if..elseif использовалось для изменения моего запроса, наконец-то я получил результат

SELECT if(MONTH(trninvhddt)=1,concat(MONTH(trninvhddt),'st Month'),if(MONTH(trninvhddt)=2,concat(MONTH(trninvhddt),'nd Month'),if(MONTH(trninvhddt)=3,concat(MONTH(trninvhddt),'rd Month'),concat(MONTH(trninvhddt),'th Month')))) as month,sum(grand_total) as amount FROM tra_inv_hd WHERE fi_yr =1 group by MONTH(trninvhddt) order by trninvhddt asc

Другой способ сгенерировать правильный формат метки запроса

0
Libin Manoharan 11 Сен 2018 в 13:18

1 ответ

Лучший ответ

Вы можете получить тот же результат с помощью оператора CASE, как показано ниже.

SELECT
  CONCAT(MONTH(trninvhddt), CASE
    WHEN MONTH(trninvhddt)%100 BETWEEN 11 AND 13 THEN "th Month"
    WHEN MONTH(trninvhddt)%10 = 1 THEN "st Month"
    WHEN MONTH(trninvhddt)%10 = 2 THEN "nd Month"
    WHEN MONTH(trninvhddt)%10 = 3 THEN "rd Month"
ELSE "th Month"
END) as month,sum(grand_total) as amount FROM tra_inv_hd WHERE fi_yr =1 group by MONTH(trninvhddt) order by trninvhddt asc
0
Kittu 11 Сен 2018 в 11:01