Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Grupowanie tylko część rekordów
Forum PHP.pl > Forum > Przedszkole
chemiqs
hej
Mam tabelę z przelewami o takiej strukturze:

id | konto | waluta | kwota | data_ksiegowania |

Wszytkie rekordy chcę grupować po dacie ksęgowania i wypisywać sumę zapłaconą.
Ale są pewne konta których nie chcę brać do grupowania. I tu stanałem.

SELECT count(konto) as licznik, konto, Data_Ksiegowania
FROM przelewy
group by data_ksiegowania, case when konto = "PL987" then NULL else konto END


Ogólnie efekt ma być taki:

LICZNIK | KONTO | DATA_KSIEGOWANIA
1 | PL987 | 2017-01-05
1 | PL987 | 2017-01-06
8 | PL999 | 2017-01-05
3 | PL888 | 2017-01-05


Nie wiem czy dobrze tłumaczę ale chcodzi mi o to żeby robił mi counta i liczył na pewnych kontach a na pewnych juz nie - i na tych co ma nie grupowc ma po prostu je wypluć - każdy rekord po kolei.

dzieki
trueblue
Chodzi Ci o to aby rekordy z pewną pulą kont grupować, a z pozostałą pulą, nie, i całość wyświetlić?

  1. SELECT count(konto) AS licznik, konto, Data_Ksiegowania
  2. FROM przelewy
  3. GROUP BY IF(konto="PL987",data_ksiegowania,id)


To zapytanie pogrupuje konta z PL987, a pozostałe pozostawi jako pojedyncze. Zakładam, że id jest unikalne.
chemiqs
hejka - pomogło bardzo - dzięki serdeczne, ale powiedz mi jeszcze jak można uzyc kilku kolumn w tym if-ie.
Jedno pole mi nie wystarcza. Można grupować multi?questionmark.gif

Zwykłe grupowanie w select działa na multicolumn - a tu mi krzyczy że nie lubi kilku kolumn.
trueblue
Musisz dodać tyle IF, po ilu kolumnach chcesz grupować.
chemiqs
super - działa pięknie

dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.