为缺少的月份填充行

qgelzfjb  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(292)

天哪,这一定很简单,但我正在努力解决这个'填写缺失数据'的问题。
我有一个表,其中包含以下列和一些插入的数据。

TABLE

year  month  payment
2014    3      100
2014    5      800
2014    9      200

我想从这个表中得到的是,从2014年起,它的付款价值有一个完整的月范围。

Month    Payment
  1        0
  2        0
  3       100
  4        0
  5       800

  ...

  12       0

我尝试在select中使用ifnull,但失败得很厉害。。。来自stackoverflow的搜索结果通常连接两个或多个表来处理信息。解决这个问题最快最好的办法是什么?

kulphzqa

kulphzqa1#

对于缺少的月份,可以对所有月份进行联合查询,并与表联接

SELECT 
t1.`year`,
t.`month`,
coalesce(t1.payment,0) payment
FROM
(SELECT 1 AS `month`
UNION 
SELECT 2 AS `month`
UNION 
....
SELECT 12 AS `month`
) AS t
LEFT JOIN your_table t1 on(t.`month` = t1.`month`)
WHERE ....

小提琴演示

相关问题