本帖最后由 taijh999 于 2010-10-12 14:47:54 编辑

解决方案 »

  1.   

    回复1楼
    select sum(jingfei) as 经费,count(*) ,sourceName  from source_table s ,t_jingfei
    where ketilaiyuan=s.sourceid and zhuchirendanwei="01" group by ketilaiyuan
    +------+----------+----------------+
    | 经费 | count(*) | sourceName     |
    +------+----------+----------------+
    |   78 |        1 | 科技部         |
    |   75 |        2 | 农业部         |
    |    6 |        1 | 国家自然基金委 |
    | NULL |        1 | 国家社科基金   |
    +------+----------+----------------+
    类似这样的统计功能
    类别没有的经费和个数都为0
      

  2.   

    无法理解。 (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    SELECT b.sourceid,COUNT(a.leibie),COALESCE(SUM(a.jingfei),0)
     FROM t_jingfei a RIGHT JOIN source_table b ON a.ketilaiyuan=b.sourceid
     GROUP BY b.sourceid
      

  4.   

    CREATE TABLE t_jingfei (ketibianhao VARCHAR(50) NOT NULL, 
    ketilaiyuan VARCHAR(30) NOT NULL, 
    zhuchirendanwei VARCHAR(30) NOT NULL,
     zhuchiren VARCHAR(80) NOT NULL, jingfei FLOAT,
     boruriqi VARCHAR(10), leibie CHAR(2), PRIMARY KEY (ketibianhao));INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('1111', '01', '01', '07008', 78.0, '2008-01-09', '01');
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('222', '02', '02', '07005', 89.0, '2009-01-12', '02');
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('333', '03', '01', '07005', 67.0, '2010-1-2', '01');
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('444', '01', '07', '06007', 89.0, '2010-1-1', '02');
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('666', '08', '07', '07008', 12.0, '2009-1-1', '01');
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('555', '09', '06', '07010', 56.0, '2009-1-1', '02');
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('777', '04', '07', '07020', 66.0, '2008-1-1', '02');
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('88', '07', '04', '09001', 23.0, '2009-1-1', '02');
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('99', '09', '04', '05004', 67.0, '2008-9-9', '02');
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('5', '03', '01', '01', 8.0, '2010', NULL);
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('345', '04', '01', '01', 6.0, '2010', NULL);
    INSERT INTO keyanguanli.t_jingfei (ketibianhao, ketilaiyuan, zhuchirendanwei, zhuchiren, jingfei, boruriqi, leibie) VALUES ('543', '05', '01', '55', NULL, '2010', NULL);
    CREATE TABLE source_table (sourceid CHAR(2) NOT NULL, `sourceName` VARCHAR(20), PRIMARY KEY (sourceid));INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('01', '科技部');
    INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('02', '教育部');
    INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('03', '农业部');
    INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('04', '国家自然基金委');
    INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('05', '国家社科基金');
    INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('06', '省科技厅');
    INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('07', '省哲学社科规划办');
    INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('08', '省教育厅');
    INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('09', '农垦总局');
    INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('10', '大庆市科技局');
    INSERT INTO keyanguanli.source_table (sourceid, `sourceName`) VALUES ('11', '开发区经济科技局');
    +------------------+----------+------+
    | sourceName       | 课题个数 | 经费 |
    +------------------+----------+------+
    | 科技部           |        2 |  167 |
    | 教育部           |        1 |   89 |
    | 农业部           |        2 |   75 |
    | 国家自然基金委   |        2 |   72 |
    | 国家社科基金     |        1 |    0 |
    | 省科技厅         |        0 |    0 |
    | 省哲学社科规划办 |        1 |   23 |
    | 省教育厅         |        1 |   12 |
    | 农垦总局         |        2 |  123 |
    | 大庆市科技局     |        0 |    0 |
    | 开发区经济科技局 |        0 |    0 |
    +------------------+----------+------+
    我根据4楼的做出来了
    SELECT b.sourceName, COUNT(a.ketilaiyuan) as 课题个数,COALESCE(SUM(a.jingfei),0) as 经费
     FROM t_jingfei a RIGHT JOIN source_table b ON a.ketilaiyuan=b.sourceid
     GROUP BY b.sourceid
    请您多指教