2017-09-14 73 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]; 

爲別人尋找一個類似的解決方案,請注意,我用的「最後」,而不是其他的東西(你可能首先想,計數等)。