Mysql SQL:如何在Group By中包含空的或空的年份
我想按年份获取Mysql SQL:如何在Group By中包含空的或空的年份,mysql,Mysql,我想按年份获取计数,并包含带有空值或零值的年份 这是我目前的问题 SELECT YEAR(`date_incident`) as Year ,COUNT(`tblrespond`.`patient_no`) as Total FROM `tblrespond` Inner Join `tblincident` On `tblincident`.`incident_no` = `tblrespond`.`incident_no` Inner Join `tblpatients` On
计数
,并包含带有空值或零值的年份
这是我目前的问题
SELECT YEAR(`date_incident`) as Year
,COUNT(`tblrespond`.`patient_no`) as Total
FROM `tblrespond`
Inner Join `tblincident`
On `tblincident`.`incident_no` = `tblrespond`.`incident_no`
Inner Join `tblpatients`
On `tblpatients`.`patient_no` = `tblrespond`.`patient_no`
Group By YEAR(`date_incident`)
但此查询会跳过数据为空的年份
我想要的是这样生成
YEAR Total
----- ------
2011 10
2012 7
2013 0
2014 12
2015 0
2016 5
在我当前的查询中。将跳过2013年和2015年
它有3个关系表tblrespond
,tblincident
,tblpartients
tblincident
和tblpartients
都连接到tblrespond
如果列中没有“所有年份”值,则必须提供年份表和左联接查询
SELECT t.myYear as Year, ifnull(COUNT(`tblrespond`.`patient_no`), 0) as Total
from (
select 2011 as myYear
union
select 2012
union
select 2013
union
select 2014
union
select 2015
union
select 2016
) t
LEFT JOIN `tblrespond` on t.myYear = `tblrespond`.YEAR(`date_incident`)
Inner Join `tblincident` On `tblincident`.`incident_no` = `tblrespond`.`incident_no`
Inner Join `tblpatients` On `tblpatients`.`patient_no` = `tblrespond`.`patient_no`
mysql还是sql server?@scaisEdge我很抱歉。我想是mysql。我只是加入了建议的标签。对不起,我会编辑的。它的mysql因为我使用xammpConsider处理应用程序代码中的数据显示问题(例如,“xampp”的第一个或第二个“p”)。好的,我试试。thanks@scaisEdge:但是这个代码没有效率,对吗?如果插入新年值,您的查询也必须更改。@Ulias。。对的这只是对OP的一个建议,只与OP提供的样本和问题有关。但正如他们所说,在我的国家,这总比没有好,我不同意“在这种情况下没有比这更好的了。@scaisEdge我已经创建了一个
tblyear
,并将year
作为字段并插入了年份。并复制了您的查询并将t.myYear
更改为tblyear.year
,但它给了我一个错误。