Mysql之填充缺失月份的行

你猜 阅读:182 2025-02-15 21:57:57 评论:0

天哪,它一定很简单,但我正在努力解决这个“填写缺失数据”的问题。

我有一个表,其中包含以下列和一些插入的数据。

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 的搜索结果通常连接两个或多个表来处理信息。解决此问题最快最好的解决方案是什么?

请您参考如下方法:

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

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 .... 

Fiddle Demo


标签:mysql
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号