web-dev-qa-db-ja.com

MS Accessでのデータのピボット

1か月間にわたって取得した学生IDと食事項目を取得するために作成したクエリがあります。 1か月の間に学生が取った各項目(朝食、ランチ、スナック)の数を数えたいのですが。

データが多すぎてピボットテーブルレポートで処理できないようです。そのため、代わりに実行できるSQLクエリがあることを望んでいました。

これが私が作成した現在のクエリです:

SELECT April2013.SID, MenuItems.MealType AS Apr2013Meal  
FROM April2013 LEFT JOIN MenuItems ON MenuItems.Item=April2013.Item;  

現在の出力:

+-----+-----------+  
| SID |   Meal    |  
+-----+-----------+  
| 001 | Lunch     |  
| 002 | Lunch     |  
| 003 | Breakfast |  
| 004 | Snack     |  
| 005 | Lunch     |
| 006 | Lunch     |  
| 001 | Breakfast |  
| 003 | Snack     |  
| 004 | Breakfast |  
+-----+-----------+

これが私が見たい方法です:

+-----+-----------+-------+---------+  
| SID | Breakfast | Lunch | Snack   |  
+-----+-----------+-------+---------+  
| 001 |         3 |    10 |     1   |  
| 002 |         4 |     8 |    10   |  
| 003 |        18 |     2 |     7   |  
| 004 |         6 |     7 |     2   |  
+-----+-----------+-------+---------+  
13
user2382144

TRANSFORMを使用してデータをピボットできます。

TRANSFORM COUNT(MenuItems.MealType)
SELECT April2013.SID, MenuItems.MealType
FROM April2013 
LEFT JOIN MenuItems 
  ON MenuItems.Item=April2013.Item
GROUP BY April2013.SID
PIVOT MenuItems.MealType; 
19
Taryn