先幫你頂一下,給點行列轉置的代碼給你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
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
你的数据库设计似乎有问题
提点意见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应该为组合主键
|
qi_id (二级题的id)
|
ai_id (三级题的id)也就是说用户回答的实际上是三级题。如果有回答,就在answer表里面的value_int存上三级题的id,这样最后就能统计用户那个题答了,哪道题没有。
q_id qi_id
1 1
1 2
2 3 --这个是二级题的id,为什么同一个大题下面的重复??????
2 3 --重复了,三级题又该怎么对应?
2 4
2 4
2 5
2 5
3 6