第一次在这里发帖...请原谅格式问题。经过几天的尝试寻找类似的情况来解决我的问题,我仍然发现自己在魔方中。我正在尝试创建一份“报告”,以显示学生在考试中的表现及其人口统计数据。这是场景:
我有一个包含以下列的考试源表:
表名:FOT2012PRE
ItemID int (主键)
ItemNum nchar(10) (结果表中对应的列名)
ItemStem nvarchar(1000) (这是题干。)
IC1 nvarchar(1000) (这是第一个答案选择。)
IC2 nvarchar(1000 ) (这是第二个答案选项。)
IC3 nvarchar(1000) (这是第三个答案选项。)
IC4 nvarchar(1000) (这是第四个答案选项。)
PriAns nvarchar(10) (这是正确答案选项- 人口统计项目不适用。)
还有其他列来识别图形、视频、课程、单元、演示标志。
以下是考试源表中的一些数据:
ItemID ItemNum ItemStem IC1 IC2 IC3 IC4 PriAns
1 Item1 您目前的年级是多少?9 年级 10 年级 11 年级 12 年级 NULL
2 Item2 你的性别是?男 女 NULL NULL NULL
当学生回答每个问题时,他们的选择会记录在针对该考试的结果表中。此结果表具有以下列:
表名:FOT2012PRERESULTS
ResultsID int (Primary Key)
StudentID nvarchar(255) (每位参加考试的学生的唯一 ID)
LastItem nvarchar(255) (更新处理的每个答案 - 用于重新进入考试)
Item1 nvarchar(255) (为 Item1 记录的答案:" C" 如果正确;如果不正确则选择)
Item2
nvarchar(255) (为 Item2 记录的答案:与考试中的所有其他问题相同)
以下是结果表中的一些示例数据:
ResultsID StudentID LastItem Item1 Item2 Item3
743 MD911059935 67 IC2 IC2 C
744 IC2 IC2 C
746 MD911059949 67 IC2 IC2 IC4
934 MD3590986869 46 IC2 IC1 IC3
最终,我希望能够让我的报告看起来像这样:
项目:你现在的年级是多少?
9 年级(IC1 响应数)
10 年级(IC2 响应数)
11 年级(IC3 响应数)
12 年级(IC4 响应数)
无响应(NULL 响应数)
这些结果将采用表格的形式,并在本地、地区、州和国家的基础上比较结果,但我可以执行相应的嵌套查询来处理它。对于这个解决方案,我持开放态度并相信它可能最好作为存储过程来实现,因为大约有 40 场考试分布在许多州和数千名学生中。我可以根据需要传递表名和其他值。根据为特定班级进行的考试,对报告的访问是个性化的。
我感谢任何帮助和建议。我必须恭敬地请求您提供有关任何连接或支点的细节。我是 ASP JavaScript 中的恐龙和程序。到目前为止,我在这条路上的尝试只让我进入了这个立方体……我需要一些光线来找到我的出路。如果我遗漏了什么,请告诉我。
谢谢...
更新:
这是我为将数据规范化到一个表中而创建的 SP 的一部分:
Create Table #rawtemp
(
Choice nchar(5),
ChoiceCount float
)
Create Table #temp
(
Item nchar(5),
Choice nchar(5),
ChoiceCount float
)
-- Query the results table and tally by response
while (@i <= 8)
begin
SET @examcolinc = cast(@i as varchar(2)) -- 基于循环增量
SET @examcol = @res2+@examcolinc -- 追加增量以创建增量列名 - 基值为“项目”这个词
Declare @xsql nvarchar(1000) --this query cycles through each unique column in the results table, counting and grouping according to each response
Set @xsql = 'Select '+@examcol+' AS Choice, Count(*) AS ChoiceCount FROM dbo.'+@pretest+' WHERE '+@examcol+' <> '''' AND StudentID LIKE '''+@st+''' Group By '+@examcol
-- Exec (@xsql) -- 将原始计数存储到临时表中
Insert #rawtemp Exec (@xsql)
Insert #temp -- 说明递增的列名称(例如,Item1、Item 2 等)
(
Item
)
值
(
@examcol
)
SET @i = @i+1 --increment the loop by one
end <br>
以下是查询的结果:
Choice ChoiceCount
IC1 323
IC2 154
IC3 34
IC4 20
IC1 275
IC2 244
IC1 423
IC2 62
IC3 10
IC4 7
...
这是 #temp 插入的结果:
Item Choice ChoiceCount
Item1 NULL NULL
Item2 NULL NULL
Item3 NULL NULL
Item4 NULL NULL
Item5 NULL NULL
Item6 NULL NULL
Item7 NULL NULL
Item8 NULL NULL
只是想让他们结婚......因为它是我需要作为值插入到临时表中的列的“名称”,所以我一直在绞尽脑汁想弄清楚。非常感激任何的帮助。可能是上面的临时表输入到另一个临时表中,该表最终将与考试源表连接,以便我可以检索题干、干扰项、单元编号和相关的基准/标准。