0
该查询给了我,我需要让动态的,所以当年列没有硬编码:总和由每个用户,用户组,动态列年度每年
SELECT u.last_name as 'Name',
COUNT(e.user_id) as 'Total',
SUM(CASE WHEN YEAR(e.datetime)=2012 THEN 1 END) as '2012',
SUM(CASE WHEN YEAR(e.datetime)=2013 THEN 1 END) as '2013',
SUM(CASE WHEN YEAR(e.datetime)=2014 THEN 1 END) as '2014',
SUM(CASE WHEN YEAR(e.datetime)=2015 THEN 1 END) as '2015',
SUM(CASE WHEN YEAR(e.datetime)=2016 THEN 1 END) as '2016'
FROM entries e, users u
WHERE e.user_id = u.user_id
GROUP BY e.user_id
有没有办法动态创建年份列,并使用mysql动态地将它们求和?我当然可以用一些PHP来做,但是想知道在纯MySQL中是否可行。
当前查询输出是这样的:
Name Total 2012 2013 2014 2015 2016
Smith 568 186 124 162 75 21
Jones 579 188 156 160 68 7
你不能,真。这是一个数据透视查询,并且mysql不直接支持它们。你有什么是标准的解决方法,正如你所看到的,它不能是动态的。改为使用客户端代码。它会简化您的查询 –
Gotchya。马克,谢谢,谢谢。 –