/ / Jak mogę GRUPOWA PRZEZ więcej niż jeden wiersz / kolumnę? - mysql

Jak mogę grupować według więcej niż jednego wiersza / kolumny? - mysql

Szukam sposobu grupowania więcej niż jednej kolumny w mysql. Stół jest prawie taki:

Customer, Product, Date

Joe, Apple, 2011-01-01
Henry, Banana, 2011-05-26
Sally, Peach, 2011-06-02
Jane, Strawberry, 2010-06-25

Co chcę zrobić, to policzyć LICZBY Produktów, które kupił klient, i pogrupować je według miesiąca w roku.

Tak by wyglądało.

COUNT (produkt) | Styczeń | Luty | Marzec ....... | Całkowity

Jeśli używam tylko produktu GROUP BY, otrzymam MIESIĄC (datę)

Banana, January, 2
Banana, February, 3
Banana, March, 1

i tak dalej.

Czy istnieje sposób, aby to zrobić, aby uzyskać tak wielewiersze, ponieważ mam różne produkty, a następnie kolumnę dla każdego miesiąca? Naprawdę staram się nie robić tego później w PHP, ponieważ jest niesamowicie powolny. Wielkie dzięki, już!

Odpowiedzi:

1 dla odpowiedzi № 1
SELECT Product,
SUM(CASE WHEN MONTH(date) =  1 THEN 1 ELSE 0 END) Jan,
SUM(CASE WHEN MONTH(date) =  2 THEN 1 ELSE 0 END) Feb,
SUM(CASE WHEN MONTH(date) =  3 THEN 1 ELSE 0 END) Mar,
SUM(CASE WHEN MONTH(date) =  4 THEN 1 ELSE 0 END) Apr,
SUM(CASE WHEN MONTH(date) =  5 THEN 1 ELSE 0 END) May,
SUM(CASE WHEN MONTH(date) =  6 THEN 1 ELSE 0 END) Jun,
SUM(CASE WHEN MONTH(date) =  7 THEN 1 ELSE 0 END) Jul,
SUM(CASE WHEN MONTH(date) =  8 THEN 1 ELSE 0 END) Aug,
SUM(CASE WHEN MONTH(date) =  9 THEN 1 ELSE 0 END) Sep,
SUM(CASE WHEN MONTH(date) = 10 THEN 1 ELSE 0 END) Oct,
SUM(CASE WHEN MONTH(date) = 11 THEN 1 ELSE 0 END) Nov,
SUM(CASE WHEN MONTH(date) = 12 THEN 1 ELSE 0 END) Dec,
COUNT(date) Total
FROM
MyTable
GROUP BY
product