SQL查询SELECT Data From One列,根据YEAR拆分为两个,删除null

时间:2016-12-02 11:19:39

标签: mysql sql null group-by

我需要帮助将列分成两部分,具体取决于数据来自哪一年。

admin_overtime_confirm_path(shift: params[:shift].permit!.to_h, sms: true)

SQL-Fiddle

第2015列将填充前9个月,而2016年列将为空,2016年第二个9个月将填充,2015年无效我希望2016年与2015年在同一行,如下所示。

SELECT DISTINCT MONTH,

(SELECT hwater 
 FROM test 
 WHERE      (ID = A.ID) 
    AND (year = 2015)) AS `2015`,

(SELECT hwater 
 FROM test 
 WHERE      (ID = A.ID) 
    AND (year = 2016)) AS `2016`

FROM test AS A 
WHERE A.year = 2015 OR A.year = 2016

我尝试了GROUP BY Month,这导致仅显示2015年的结果,而2016年为NULL

计划是将此数据用作面积图的数组,以直观地比较渐变。

提前致谢。

1 个答案:

答案 0 :(得分:1)

尝试使用CASE表达式:

SELECT MONTH,
       MAX(CASE WHEN year = 2015  THEN hwater ELSE 0 END) as `2015`,
       MAX(CASE WHEN year = 2016  THEN hwater ELSE 0 END) as `2016`       

FROM test AS A 
WHERE A.year = 2015 OR A.year = 2016
GROUP BY MONTH
ORDER BY MONTH

SQLFiddle demo