Łączenie SUM w SELECT w jednym rekordzie

Łączenie SUM w SELECT w jednym rekordzie
GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

nWitam.
Jak skonstruować zapytanie aby MySQL zwrócił mi coś takiego:
+------------+------------+
|Suma 1 |Suma 2 | ETC
+------------+------------+
|1291.21 |343 | ETC
+------------+------------+

Wszystkie dane do do zwrócenia wyniku zapytania zawarte są tylko w jednej tabeli.
Próbowałem m.in. tak:
SELECT SUM(kwota) AS 'Suma 1' FROM tabela_name JOIN SUM(kwota) AS 'Suma 2' FROM tabela_name WHERE data< >'0001-01-01';

  • to oczywiście nie działa, ale może powyższa konstrukcja wyjaśni co chciałbym osiągnąć.
    Z góry dzięki.

EDIT:
Działa np. coś takiego:
SELECT SUM(kwota) AS 'suma1', SUM(kwota) AS 'suma 2', SUM(kwota) AS 'suma 3' FROM tabela_name;
tylko gdzie tu wcisnąć różne warunki WHERE dla suma 1, suma 2 i suma 3 ?

LD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 115
1
Kopiuj
select (select sum(xxx) sum1 from tab where yyy=zzz) as suma1, (select sum(xxx) from tab where yyy=qqq) as suma2

I tak dalej

ewentualnie sum(case when)

GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

Właśnie do tego doszedłem (nawiasy), ale dzięki.

WL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1085
3

Rozwiązanie z CASE powinno być szybsze i to znacznie, czyli:

Kopiuj
SELECT 
   sum(case when A.warunek = 1 then A.Kwota else 0 end) as Kwota1,
   sum(case when A.warunek = 2 then A.Kwota else 0 end) as Kwota2,
   sum(case when A.warunek = 3 then A.Kwota else 0 end) as Kwota3
FROM tab a
group by a.warunek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.