一个复杂的group by的写法 本帖最后由 taijh999 于 2010-10-12 07:13:44 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select a.sourceid,a.sourceName, count(ketibianhao) as `课题个数` , IfNull(sum(jingfei),0) as `经费`, yy as yearfrom (source_table a ,(select 2008 as yyUnionselect 2009 as yyUnionselect 2010 as yy) b) left join t_jingfei c on a.sourceid=c.ketilaiyuan and yy=SUBSTRING(boruriqi,1,4) group by a.sourceid,Yearmysql> select a.sourceid,a.sourceName, -> count(ketibianhao) as `课题个数` , -> IfNull(sum(jingfei),0) as `经费`, -> yy as year -> from (source_table a ,( -> select 2008 as yy -> Union -> select 2009 as yy -> Union -> select 2010 as yy -> ) b) left join t_jingfei c on a.sourceid=c.ketilaiyuan and yy=SUBSTRING(boruriqi,1,4) -> group by a.sourceid,year;+----------+------------------+----------+------+------+| sourceid | sourceName | 课题个数 | 经费 | year |+----------+------------------+----------+------+------+| 01 | 科技部 | 1 | 78 | 2008 || 01 | 科技部 | 0 | 0 | 2009 || 01 | 科技部 | 1 | 89 | 2010 || 02 | 教育部 | 0 | 0 | 2008 || 02 | 教育部 | 1 | 89 | 2009 || 02 | 教育部 | 0 | 0 | 2010 || 03 | 农业部 | 0 | 0 | 2008 || 03 | 农业部 | 0 | 0 | 2009 || 03 | 农业部 | 1 | 67 | 2010 || 04 | 国家自然基金委 | 1 | 66 | 2008 || 04 | 国家自然基金委 | 0 | 0 | 2009 || 04 | 国家自然基金委 | 0 | 0 | 2010 || 05 | 国家社科基金 | 0 | 0 | 2008 || 05 | 国家社科基金 | 0 | 0 | 2009 || 05 | 国家社科基金 | 0 | 0 | 2010 || 06 | 省科技厅 | 0 | 0 | 2008 || 06 | 省科技厅 | 0 | 0 | 2009 || 06 | 省科技厅 | 0 | 0 | 2010 || 07 | 省哲学社科规划办 | 0 | 0 | 2008 || 07 | 省哲学社科规划办 | 1 | 23 | 2009 || 07 | 省哲学社科规划办 | 0 | 0 | 2010 || 08 | 省教育厅 | 0 | 0 | 2008 || 08 | 省教育厅 | 1 | 12 | 2009 || 08 | 省教育厅 | 0 | 0 | 2010 || 09 | 农垦总局 | 1 | 67 | 2008 || 09 | 农垦总局 | 1 | 56 | 2009 || 09 | 农垦总局 | 0 | 0 | 2010 || 10 | 大庆市科技局 | 0 | 0 | 2008 || 10 | 大庆市科技局 | 0 | 0 | 2009 || 10 | 大庆市科技局 | 0 | 0 | 2010 || 11 | 开发区经济科技局 | 0 | 0 | 2008 || 11 | 开发区经济科技局 | 0 | 0 | 2009 || 11 | 开发区经济科技局 | 0 | 0 | 2010 |+----------+------------------+----------+------+------+33 rows in set (0.05 sec)mysql> Mysql多属性值汇总 产品复合分类数据表设计。 MYSQL SIMPLE QUESTION OF SELECT HELP 如何实现这个一个sql语句(mysql) mysql的触发器大家都在什么情况下使用 用sql脚本建五个表,总提示出错!请高人修改! 急,如何获取表中主键的确名称?Sybase和SQL的语句各改怎么写? jsp连接mysql的驱动问题 mysql数据库 关于MYSQL和DRBD的应用问题 ifnull是postgresql自带的function吗? inet_aton 有什么好处啊
count(ketibianhao) as `课题个数` ,
IfNull(sum(jingfei),0) as `经费`,
yy as year
from (source_table a ,(
select 2008 as yy
Union
select 2009 as yy
Union
select 2010 as yy
) b) left join t_jingfei c on a.sourceid=c.ketilaiyuan and yy=SUBSTRING(boruriqi,1,4)
group by a.sourceid,Yearmysql> select a.sourceid,a.sourceName,
-> count(ketibianhao) as `课题个数` ,
-> IfNull(sum(jingfei),0) as `经费`,
-> yy as year
-> from (source_table a ,(
-> select 2008 as yy
-> Union
-> select 2009 as yy
-> Union
-> select 2010 as yy
-> ) b) left join t_jingfei c on a.sourceid=c.ketilaiyuan and yy=SUBSTRING(b
oruriqi,1,4)
-> group by a.sourceid,year;
+----------+------------------+----------+------+------+
| sourceid | sourceName | 课题个数 | 经费 | year |
+----------+------------------+----------+------+------+
| 01 | 科技部 | 1 | 78 | 2008 |
| 01 | 科技部 | 0 | 0 | 2009 |
| 01 | 科技部 | 1 | 89 | 2010 |
| 02 | 教育部 | 0 | 0 | 2008 |
| 02 | 教育部 | 1 | 89 | 2009 |
| 02 | 教育部 | 0 | 0 | 2010 |
| 03 | 农业部 | 0 | 0 | 2008 |
| 03 | 农业部 | 0 | 0 | 2009 |
| 03 | 农业部 | 1 | 67 | 2010 |
| 04 | 国家自然基金委 | 1 | 66 | 2008 |
| 04 | 国家自然基金委 | 0 | 0 | 2009 |
| 04 | 国家自然基金委 | 0 | 0 | 2010 |
| 05 | 国家社科基金 | 0 | 0 | 2008 |
| 05 | 国家社科基金 | 0 | 0 | 2009 |
| 05 | 国家社科基金 | 0 | 0 | 2010 |
| 06 | 省科技厅 | 0 | 0 | 2008 |
| 06 | 省科技厅 | 0 | 0 | 2009 |
| 06 | 省科技厅 | 0 | 0 | 2010 |
| 07 | 省哲学社科规划办 | 0 | 0 | 2008 |
| 07 | 省哲学社科规划办 | 1 | 23 | 2009 |
| 07 | 省哲学社科规划办 | 0 | 0 | 2010 |
| 08 | 省教育厅 | 0 | 0 | 2008 |
| 08 | 省教育厅 | 1 | 12 | 2009 |
| 08 | 省教育厅 | 0 | 0 | 2010 |
| 09 | 农垦总局 | 1 | 67 | 2008 |
| 09 | 农垦总局 | 1 | 56 | 2009 |
| 09 | 农垦总局 | 0 | 0 | 2010 |
| 10 | 大庆市科技局 | 0 | 0 | 2008 |
| 10 | 大庆市科技局 | 0 | 0 | 2009 |
| 10 | 大庆市科技局 | 0 | 0 | 2010 |
| 11 | 开发区经济科技局 | 0 | 0 | 2008 |
| 11 | 开发区经济科技局 | 0 | 0 | 2009 |
| 11 | 开发区经济科技局 | 0 | 0 | 2010 |
+----------+------------------+----------+------+------+
33 rows in set (0.05 sec)mysql>