Как конвертировать месяц из INT в VARCHAR при группировке даты по месяцам - PullRequest
0 голосов
/ 28 апреля 2019

Мне нужно подвести итоги количества интервью за каждый месяц за все годы в удобочитаемой форме.

SELECT month(i.Date) AS Month, Year(i.Date) AS Year, Count(i.Id) AS' Number of Interviews'
FROM Interviews i
GROUP BY month(i.Date), year(i.Date)
ORDER BY year(i.Date) DESC, month(Date) ASC

Я хочу, чтобы запрос возвращал месяц как VARCHAR, например, "январь", вместо значения INT по умолчанию из функции "месяц".

Ответы [ 3 ]

1 голос
/ 28 апреля 2019

Для MySql это будет:

SELECT 
  monthname(i.Date) AS Month, 
  Year(i.Date) AS Year, 
  Count(i.Id) AS `Number of Interviews`
FROM Interviews i
GROUP BY month(i.Date), monthname(i.Date), year(i.Date)
ORDER BY year(i.Date) DESC, month(i.Date) ASC

Для SQL Server :

SELECT 
  datename(month, i.date) AS Month, 
  Year(i.Date) AS Year, 
  Count(i.Id) AS [Number of Interviews]
FROM Interviews i
GROUP BY month(i.Date), datename(month, i.date), year(i.Date)
ORDER BY year(i.Date) DESC, month(i.Date) ASC
0 голосов
/ 30 апреля 2019

SELECT count (1), формат (dateColumn, 'гггг-ММ') FROM tableName Формат GROUP BY (dateColumn, 'гггг-ММ') ЗАКАЗАТЬ НА 2

0 голосов
/ 28 апреля 2019

Решение, которое работает для большинства СУБД, - это выражение CASE.

SELECT CASE month(i.date)
         WHEN 1 THEN
           'January'
         ...
         WHEN 12 THEN
           'December'
       END month,
       year(i.date) year,
       count(i.id) number_of_interviews
       FROM interviews i
       GROUP BY month(i.date),
                year(i.date)
       ORDER BY year(i.date) DESC,
                month(i.date) ASC;
...