我有下面的查询在select查询中生成列,我手动键入,但是我希望通过一个迭代循环生成列,该循环获取开始日期和结束日期,然后输出开始日期和结束日期之间的相应年份
SELECT
SUM(IF(DATE_FORMAT(a.`Date_First_Seen`,"%Y")="2011",1,0))"2011"
,SUM(IF(DATE_FORMAT(a.`Date_First_Seen`,"%Y")="2012",1,0))"2012"
,SUM(IF(DATE_FORMAT(a.`Date_First_Seen`,"%Y")="2013",1,0))"2013"
,SUM(IF(DATE_FORMAT(a.`Date_First_Seen`,"%Y")="2014",1,0))"2014"
,SUM(IF(DATE_FORMAT(a.`Date_First_Seen`,"%Y")="2015",1,0))"2015"
,SUM(IF(DATE_FORMAT(a.`Date_First_Seen`,"%Y")="2016",1,0))"2016"
,SUM(IF(DATE_FORMAT(a.`Date_First_Seen`,"%Y")="2017",1,0))"2017"
,SUM(IF(DATE_FORMAT(a.`Date_First_Seen`,"%Y")="2018",1,0))"2018"
FROM year_table a
WHERE DATE_FORMAT(Date_First_Seen,"%Y") BETWEEN "2011" AND "2018"
1条答案
按热度按时间s4chpxco1#
可以显著减少此查询并消除冗余。使用
year
以较少的麻烦来获得约会的年份。然后一年一组,计算每组的日期。如果要将其作为一列,请使用透视表。下面是一个关于如何在mysql中实现这一点的答案。