Получить значение для пустой даты в функции MySQL Date - PullRequest
0 голосов
/ 07 мая 2020

У меня есть следующий MySQL запрос

SELECT SUM( mc_gross ) AS total, MONTH( transaction_datetime ) AS months 
FROM users_payment 
WHERE 1 AND YEAR( transaction_datetime ) = '2020' 
GROUP BY MONTH( transaction_datetime ) , YEAR( transaction_datetime )

результат, который я получаю:

total month
34.90 2
4.95 3
49.85 4
14.85 5

Однако мне нравится видеть, могу ли я создать результат ниже, только из MySQL запрос?

total month
0.00 1
34.90 2
4.95 3
49.85 4
14.85 5
 0.00 6
 0.00 7
 0.00 8
 0.00 9
 0.00 10
 0.00 11
 0.00 12

1 Ответ

1 голос
/ 07 мая 2020

Вы можете использовать RIGHT JOIN вместо табличного выражения со всеми 12 значениями.

Например:

select
  coalesce(q.total, 0.0) as total,
  m.n as month
from ( -- your query here
  SELECT SUM( mc_gross ) AS total, MONTH( transaction_datetime ) AS months
  FROM users_payment 
  WHERE 1 AND YEAR( transaction_datetime ) = '2020' 
  GROUP BY MONTH( transaction_datetime ) , YEAR( transaction_datetime )
) q
right join (
  select 1 as n union all select 2 union all select 3 
  union all select 4 union all select 5 union all select 6
  union all select 7 union all select 8 union all select 9
  union all select 10 union all select 11 union all select 12
) m on q.months = m.n
order by m.n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...