t_TQuiz_Detail表(试题及答案信息)
ID int
Qtype int 试题类型,对应t_Type中的id
Question ntext 问题描述
AnswerCount int 答案项数
AnswerList nvarchar 答案列表
ScoreList nvarchar 各答案对应分数列表
QS int 试题期数
内容如下:
id Qtype Question AnswerCount AnswerList Scorelist QS
1 14 哪个国家的人会庆祝斋月 5 沙特阿拉伯CCCC印度CCCC新加坡CCCC韩国CCCC上述四国 0,1,0,0,0,0 1
2 14 与韩国生意伙伴见面,称呼5 金先生CCCC卢先生CCCC吉先生CCCC兄弟CCCC以上称呼都可以 0,0,1,0,0,0 1
18 2 当你从事一个项目时 2 讲求实际的CCCC富于想象的 0,1 1
27 2 你最欣赏的人是 2 有创造的精神的CCCC细心的 1,0 1
43 19 我经常征求意见和建议 2 是CCCC否 1,0 1
69 21 你能发觉醒来是早上吗 4 一点不容易CCCC不太灵活CCCC比较灵活CCCC非常灵活 0,1,2,3,4 1
71 21 你觉得疲倦吗 4 非常疲倦CCCC比较疲倦CCCC比较振作CCCC非常振作 0,1,2,3,4 1
86 22 大多数人本质上是好的 4 极不赞同CCCC基本不赞同CCCC两可CCCC基本赞同 0,1,2,3,4 1
t_TRecord表(个人答题记录)
ID int
username nvarchar 答题人
QID int 试题号,对应t_TQuiz_Detail中的QS
myAnswer nvarchar 所选答案列表
myScore nvarchar 对应得分列表
部分内容如下:
id username QID MyAnswer myScore
15 zhangsan 1 1,2,2,1,2,4,4,3 0,0,1,1,0,4,4,3
t_Type表(试题类型)
ID int
Subject nvarchar 试题类型
内容如下:
ID Subject
2 项目管理
14 商务礼仪
19 心理素质
21 身体测评
22 情商测评
现在我要统计每个用户答一套题(试题数不定)时本套试题的最高应得分,实际得分,各类的最高应得分和实际得分,用一条语句来实现,结果形如下面:
应得总分:
1 1 1 1 1 4 4 4=17
实际得分
0 0 1 1 0 4 4 3=13
项目管理应得分:1 1=2
实际得分:1 1=2
商务礼仪应得分:1 1=2
实际得分:0 0=0
心理素质应得分:1
实际得分:0
身体测评应得分:4 4=8
实际得分:4 4=8
情商测评应得分:4
实际得分:3
答:
计算给定表达式的值:
/*--调用示例
select dbo.f_calc('123 456')
--*/
create function f_calc(
@str varchar(1000)--要计算的表达式
)returns sql_variant
as
begin
declare @re sql_variant
declare @err int,@src varchar(255),@desc varchar(255)
declare @obj int
exec @err=sp_oacreate 'MSScriptControl.ScriptControl',@obj out
if @err<>0 goto lb_err
exec @err=sp_oasetproperty @obj,'Language','vbscript'
if @err<>0 goto lb_err
exec @err=sp_oamethod @obj,'Eval',@re out,@str
if @err=0 return(@re)
lb_err:
exec sp_oageterrorinfo NULL, @src out, @desc out
declare @errb varbinary(4),@s varchar(20)
set @errb=cast(@err as varbinary(4))
exec master..xp_varbintohexstr @errb,@s out
return('错误号: ' @s char(13) '错误源: ' @src char(13) '错误描述: ' @desc)
end
由于你的字符串是用',' 逗号隔开的 传值和调用时用:
select dbo.f_calc(replace(字段名,',',' '))
f_calc()这个函数就是根据数字计算的字符串来得出其值!
然后楼主自己写SQL语句就可以实现你的要求了。当然了,这个需求在应用程序中处理更合适。







评论列表