2013-05-14 7 views
9

Mam zapytanie, które utworzyłem, aby pobrać identyfikatory studentów i przedmioty z posiłków, które zajęły ponad miesiąc. Chciałbym policzyć liczbę przedmiotów (śniadanie, lunch, przekąskę), które student zrobił w ciągu miesiąca.Dane przestawne w MS Access

Wygląda na to, że w raporcie tabeli przestawnej jest za dużo danych, aby uzyskać dostęp do obsługi, więc miałem nadzieję, że istnieje zapytanie SQL, które można uruchomić.

Oto bieżące zapytanie Utworzona:

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

Prąd wyjściowy:

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

Oto jak chciałbym go szukać:

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

Odpowiedz

13

można obracać dane za pomocą 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; 
+0

Dziękujemy! To działało idealnie. – user2382144

+0

Oto nieco lepszy przykład i prostsza odpowiedź: http://stackoverflow.com/questions/16691853/transform-and-pivot-in-access-2013-sql – CobaltBlue