先给20分,实现后100分酬谢!!学校要求统计一个老师的任课信息总数和分课数(一位老师可以兼任其他课程)
教师编号 id  
课程名称 class
任课节数 num内容如下
   id  class num
   1   语文  20
   2   数学  10
   3   英语  30
   4   物理  20
   2   物理  10
   1   英语  10
   2   物理  10
   3   语文  11
   4   体育  10
   2   生物  10   统计要求   教师编号   语文  数学  英语   物理   体育  生物  总节数
      1       20     0     10     0      0     0     30
      2       0      10           20           10    40
      3       11            30                       41
      4                            20    10          30请问如何实现啊 (没有的以0显示!)

解决方案 »

  1.   

    creat table #临时表 (结构为:id,语文,数学,英语,物理,体育,生物 总数)
    写插入sql:
    insert into #临时表
     select 教师编号,语文,null,null,null,null,null,count(*) from 内容表 group by id
    ...
    依次为数学、英语、、、生物
    最后写总输出查询sql
    select * from  #临时表   group by id
      

  2.   

    如果课程是固定的相对好弄些: 如下
    if exists(select id from sysobjects where id = object_id(N'TableA'))
    drop table TableA
    gocreate table TableA (
    id nvarchar(10),
    class nvarchar(10),
    num float
    )goinsert into TableA(id,class,num) values('1','语文',20)
    insert into TableA(id,class,num) values('2','数学',12)
    insert into TableA(id,class,num) values('3','物理',23)
    insert into TableA(id,class,num) values('4','英语',20)
    insert into TableA(id,class,num) values('1','语文',44)
    insert into TableA(id,class,num) values('2','数学',67)
    insert into TableA(id,class,num) values('3','物理',20)
    insert into TableA(id,class,num) values('4','英语',78)
    insert into TableA(id,class,num) values('1','语文',20)
    insert into TableA(id,class,num) values('2','数学',54)goselect * from TableAgoselect id,
           sum(case class when '语文' then isnull(num,0) else 0 end ) as '语文',
           sum(case class when '数学' then isnull(num,0) else 0 end ) as '数学',
           sum(case class when '英语' then isnull(num,0) else 0 end ) as '英语',
           sum(case class when '物理' then isnull(num,0) else 0 end ) as '物理'
    from TableA
    group by id
      

  3.   

    select id,
           sum(case class when '语文' then isnull(num,0) else 0 end ) as '语文',
           sum(case class when '数学' then isnull(num,0) else 0 end ) as '数学',
           sum(case class when '英语' then isnull(num,0) else 0 end ) as '英语',
           sum(case class when '物理' then isnull(num,0) else 0 end ) as '物理'
    --此处在客房端用循环生成
    from TableA
    group by id
      

  4.   

    在sql2000可以的,但是在access当中就不行了!什么原因呢?
      

  5.   

    access 没有办法
    只能建个 这样的表 教师编号   语文  数学  英语   物理   体育  生物  总节数
    在delphi里计算