2017-09-14 6 views
0

学生の結果を持つテーブルでMS Access 2016を使用しています。フィールドは単にstudentID、Test、およびScoreだけです。報告目的のために、私は学生のTestScore値をすべて1つの行に持つCSVファイルを生成する必要があります。もしそうなら、私は持っていた:私はのように見える輸出用のテーブルを生成するにはどうすればよい同様のレコードを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

特定のテストを受験した学生がいなくても、すべてのテストに1つの列が必要ですか? – June7

+0

これは、クロスタブクエリのショーケースシナリオです。結果の空のセルは問題ありません。 – Andre

+0

@ June7:はい、すべてのケース(テスト)を含めたいと思います。このレポートの一部は、欠損値(例:テストを完了していない学生)を特定するために使用されます。 – DrL

答えて

0

はあなたには、クロス集計クエリのColumnHeadingsプロパティを追加することができ、すべてのテスト - 「テスタ」、「TESTB」; ...

のみのセット番号はありますか、これが育つだろうか?

+0

ありがとうございます。これは、ますます多くのケースになります。私はテーブルのフィールド名がちょうど "テスト"なので、あなたの答えはうまくいかないと思います。フィールド名がTestA、TestBなどの場合はフィールドとして追加できますが、クロス集計が必要ないとは思われません。しかし、私があなたの答えを誤解した場合は、明確にしてみてください。 – DrL

+0

12ヶ月間のハードウェアでコード化できるので、Months of the Yearにはうまく機能しますが、テストが動的な数値であればこの方法は動作しません –

0

だから、元の質問のために働く、この溶液に私を導くためのアンドレとアレックスに感謝:ここ

表名が「出力」です。同様のソリューションを探して他の誰かのために

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

、私は(あなたが、まず必要数、などかもしれない)「最終」の代わりに、何か他のものを使用することに注意してください。

関連する問題