Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Funkcje agregujące
Randallmaster
post 18.03.2016, 09:29:38
Post #1





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


Witam mam przykładowo taką tabelę

ilosc status groupes opakowanie
2 P 2 1
3 P 1 2
4 U 2 3

SELECT sum(ilosc), groupes, status FROM `test` Where 1=1 group by groups

Dostaje:
ilosc status groupes opakowanie
6 P 2 1
3 P 1 2

Co mszę zrobić aby w otrzymać takie coś:

ilosc status groupes opakowanie
6 U 2 1
3 P 1 2

Czyli jeżeli istnieje status U aby go wyświetlić, natomiast opakowanie nie może się zmienić
Go to the top of the page
+Quote Post
Qwiatu
post 18.03.2016, 14:09:45
Post #2





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 18.03.2016

Ostrzeżenie: (0%)
-----


Nie wiem czy to jest to co chciałeś osiągnąć.


  1. WITH abc (ilosc,stat,groups,opakowanie)
  2. AS
  3. (
  4.  
  5. SELECT 2,'P',2,1
  6. UNION ALL
  7. SELECT 3,'P',1,2
  8. UNION ALL
  9. SELECT 4,'U',2,3
  10. )
  11.  
  12. SELECT ilosc,stat,groups,opakowanie INTO #tmp FROM abc Where 1=1
  13.  
  14. SELECT * FROM #tmp
  15.  
  16.  
  17.  
  18. SELECT *
  19. FROM
  20. (SELECT
  21. iloscok =(SELECT
  22. t1ilosc=sum(t1.ilosc)
  23. FROM #tmp t1
  24. WHERE t1.groups=intern.groups)
  25. ,statok = isnull((SELECT t2.stat
  26. FROM #tmp t2 where t2.groups=intern.groups
  27. GROUP BY t2.stat
  28. HAVING t2.stat = 'U'),intern.stat)
  29. --,intern.stat
  30. --,intern.opakowanie
  31. ,intern.groups
  32. ,opakok = (SELECT t3.opakowanie FROM #tmp t3 where t3.groups=intern.groups and t3.stat='P')
  33.  
  34. FROM #tmp as intern ) as zapytanie
  35. GROUP BY zapytanie.iloscok, zapytanie.statok, zapytanie.groups, zapytanie.opakok
  36.  
  37.  
  38.  
  39.  
  40.  
  41. GO
  42. DROP TABLE #tmp;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:48