我需要帮助将列分成两部分,具体取决于数据来自哪一年。
admin_overtime_confirm_path(shift: params[:shift].permit!.to_h, sms: true)
第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
计划是将此数据用作面积图的数组,以直观地比较渐变。
提前致谢。
答案 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