数据库中有两个表,学员反馈表中的FbID对应反馈信息表的serID
/*--学员反馈表--*/
              班级编号  教师编号   学员编号           分值项
SELECT SerID, CassID, TeaSerID, UserSerID, FbID, FbFraction FROM SX_StuFeedback /*--反馈信息表--*/
              标题     分值A         分值B         分值C         分值D        分值E
SELECT SerID, FbTitle,FbFractionA, FbFractionB, FbFractionC, FbFractionD, FbFractionE 
FROM SX_Feedback 表中有如下数据
/*--反馈信息表--*/
1,AAAA,10,8,6,4,2
2,BBBB,10,8,6,4,2
3,CCCC,10,8,6,4,2
4,DDDD,10,8,6,4,2
.....................
/*--学员反馈表--*/
1,3,101450,101001,1,10
1,3,101450,101001,2,8
1,3,101450,101001,3,8
1,3,101450,101001,4,101,3,101450,101002,1,6
1,3,101450,101002,2,6
1,3,101450,101002,3,4
1,3,101450,101002,4,8
......................
要查询出以下格式的数据
标题     分值A总分       分值B总分   分值C总分    分值D总分  总分
AAAA       10             0         6           0       16
BBBB       0              8         6           0       14 
CCCC       0              8         0           4       12
DDDD       10             8         0           0       18
................................
求高手给个查询语句,先谢谢了 

解决方案 »

  1.   


    Create table test (name char(10),km char(10),cj int)
    go
    insert test values('张三','语文',80)
    insert test values('张三','数学',86)
    insert test values('张三','英语',75)
    insert test values('李四','语文',78)
    insert test values('李四','数学',85)
    insert test values('李四','英语',77)declare @sql varchar(8000)
    set @sql = ' 'set @sql = @sql+' select aa.*,bb.小计 from '
    set @sql = @sql+'( select name '
    select @sql = @sql+ ',sum(case km when '''+km+''' then cj end) ['+km+']'
                     from (select distinct km from test) as a 
    set @sql = @sql+' from test  '
    set @sql = @sql+'   group by name union all 'set @sql = @sql+'   select name=''总计'''
    select @sql = @sql + ',sum(case km when '''+km+''' then cj end) ['+km+']'
                      from (select distinct km from test) as a 
    set @sql = @sql+' from test 'set @sql = @sql+' union all '
    set @sql = @sql+' select name=''平均'' '
    select @sql = @sql + ',convert(decimal(5,2),(sum(case km when '''+km+''' then cj end)*100/count(distinct test.name))/100.00) ['+km+']'
                      from (select distinct km from test) as a 
    set @sql = @sql+' from test '
    set @sql = @sql+') aa left join ( '
    set @sql = @sql+' select 小计=sum(cj),name from test group by name
                      union all
                      select 小计=sum(cj),name=''总计'' from test 
                      union all
                      select 小计=convert(decimal(5,2),(sum(cj)*100/count(distinct test.name))/100.00),name=''平均'' from test )'
    set @sql  = @sql+' bb on aa.name=bb.name 'exec(@sql)drop table test
    查询分析器里运行一下看看和你的比较像~
      

  2.   

    我的UserSerID, FbID, FbFraction 这三个字段都是int类型的,
    运行是出现了转换错误哦
      

  3.   

    select 标题  ,  sum(分值A),        sum(分值B ), sum(分值C),sum(分值D),sum(分值A+分值B+分值C+分值D) from 反馈信息表 group by 标题