关于sql:在MS Access中透视数据

 2021-04-26 

Pivoting data in MS Access

我创建了一个查询,以提取他们在一个多月的时间内获取的学生ID和餐食。我想计算一下学生在一个月中所摄取的每种物品(早餐,午餐,小吃)的数量。

在数据透视表报表中似乎有太多数据无法访问,因此我希望可以代替它运行一个SQL查询。

这是我创建的当前查询:

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

电流输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
+-----+-----------+  
| SID |   Meal    |  
+-----+-----------+  
| 001 | Lunch     |  
| 002 | Lunch     |  
| 003 | Breakfast |  
| 004 | Snack     |  
| 005 | Lunch     |
| 006 | Lunch     |  
| 001 | Breakfast |  
| 003 | Snack     |  
| 004 | Breakfast |  
+-----+-----------+

这是我希望它的外观:

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

您可以使用TRANSFORM旋转数据:

1
2
3
4
5
6
7
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;