先幫你頂一下,給點行列轉置的代碼給你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('李四','英语',78)
select * from test
declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql + ',sum(case km when '''+km+''' then cj end) ['+km+']'
from (select distinct km from test) as a
select @sql = @sql+' from test group by name'
exec(@sql)drop table test

解决方案 »

  1.   


    你的数据库设计似乎有问题
    提点意见personal表       
      没有问题
      
    answer表
      增加q_id
      session_id,q_id,qi_id,value_int
      这样差不多
      session_id,q_id,qi_id应该为组合主键
      
    question表
      没什么问题
      
    question_item表  
      q_id,qi_id应该为组合主键
        
    answer_item表
      增加q_id
      q_id,qi_id ,ai_id  
      q_id,qi_id应该为组合主键
      

  2.   

    q_id  (一级题的id)
      |
    qi_id (二级题的id)
      |
    ai_id (三级题的id)也就是说用户回答的实际上是三级题。如果有回答,就在answer表里面的value_int存上三级题的id,这样最后就能统计用户那个题答了,哪道题没有。
      

  3.   

    看着都晕 question_item表
      q_id    qi_id
       1        1
       1        2
       2        3  --这个是二级题的id,为什么同一个大题下面的重复??????
       2        3  --重复了,三级题又该怎么对应?
       2        4
       2        4
       2        5
       2        5
       3        6