2017-09-14 115 views
0

我正在使用MS Access 2016,在具有学生结果的表上:所以这些字段仅仅是studentID,Test和Score。出于报告目的,我需要生成一个CSV文件,其中有一个学生的TestScore值全部在一行中。所以,如果我有:将相似的记录结合到MS Access中的单个记录

StudentID: Test:  TestScore: 
A123   TestA  80 
A123   TestB  90 
B123   TestA  70 
B123   TestB  95 

如何生成的表用于出口,看起来像:

StudentID: TestA:  TestB: 
A123   80   90 
B123   70   95 

我不认为交叉表会工作,因为没有在表中所有的学生都已经采取了一切相同的测试。有几千个案例。我也明白,可能无法通过MS Access中的SQL。

非常感谢任何有用的建议。

+0

即使没有学生进行过特定的测试,您还是希望每个测试都有一个专栏? – June7

+0

这是交叉表查询的展示方案。结果中的空单元格没有问题。 – Andre

+0

@ June7:是的,我想要包含所有案例(测试)。部分报告将用于识别缺失值(例如,未完成测试的学生)。 – DrL

回答

0

您可以添加交叉表查询的ColumnHeadings属性,包括所有的测试 - “种皮”;“TESTB”; ...

是否有只有一组数字或会这样发展?

+0

谢谢。这将是越来越多的案件。我不认为你的答案会起作用,因为表中的字段名称只是“测试”。如果字段名称是TestA,TestB等,我可以将它们添加为字段,但是我认为我不需要交叉表。但如果我误解了你的答案,请澄清,我会尝试。 – DrL

+0

它适用于本年度的月份,因为只有12个,因此您可以对其进行硬编码,但如果您的测试是动态数字,则此方法不起作用 –

0

所以谢谢你安德烈和Alex指导我该解决方案,这对于原来的问题的工作:

表在这里的名字是“输出”。

TRANSFORM Last(Output.[TestScore]) AS LastOfTestScore 
SELECT Output.[StudentID] 
FROM [Output] 
GROUP BY Output.[StudentID] 
PIVOT Output.[Test]; 

为别人寻找一个类似的解决方案,请注意,我用的“最后”,而不是其他的东西(你可能首先想,计数等)。