Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sumowanie wartości dla dwóch różnych warunków
Forum PHP.pl > Forum > Bazy danych > Access
lucasville
Cześć.
Chciałbym otrzymać w kolumnach 5 różnych sum wartości z czego 4 mają te same kryterium a piąte ma inne. Chciałbym to zrobić w jednej kwerendzie.
Powiedzmy, że mam tabelę o nazwie sprawa, która wygląda mniej więcej tak:

  1. Id War1 War2 D1 D2 D3 D4 D5
  2. 1 1 5 100 50 30 20 10
  3. 2 1 6 0 0 0 20 0
  4. 3 2 6 10 100 20 0 0
  5. 4 3 4 50 40 20 30 20
  6. 5 1 5 20 30 40 50 10
  7. 6 2 6 100 40 100 50 100
  8. 7 3 5 40 30 20 10 0
  9. 8 3 4 0 10 20 30 40
  10. 9 1 5 50 100 40 10 40



I chciałbym otrzymać tabelę, gdzie będzie pięć kolumn po dwa wiersze (nagłówek + suma). Pierwsze cztery kolumny robię zapytaniem:
  1. SELECT sum(D1) AS Suma1,sum(D2) AS Suma2,sum(D3) AS Suma3,sum(D4) AS Suma4
  2. FROM sprawa
  3. WHERE War1=3;


Piątą kolumnę robię zapytaniem:
  1. SELECT sum(D5) AS Suma5
  2. FROM sprawa
  3. WHERE War1=3 AND War2=4;


Jak mogę połączyć te dwa zapytania w jedną tabelę?
Efekt końcowy mniej więcej taki chciałbym uzyskać:
  1. Suma1 Suma2 Suma3 Suma4 Suma5
  2. 90 80 60 70 60
mmmmmmm
  1. SELECT sum(D1) AS Suma1,sum(D2) AS Suma2,sum(D3) AS Suma3,sum(D4) AS Suma4, Sum(IIf(War2=4,D5,NULL)) Suma5
  2. FROM sprawa
  3. WHERE War1=3;
lucasville
Działa idealnie. Tak jak chciałem.
Udało mi się wczoraj to zrobić za pomocą funkcji UNION: jedno zapytanie ze wspólnym war1 połączyłem z drugim zapytaniem, gdzie dodatkowo jest war2, tyle, że musiałem dodać "puste" kolumny, aby UNION zadziało, a w dodatku kiepsko to wyglądało.

Twoje rozwiązanie jest zdecydowanie tym o co mi chodziło.

Zapytam przy okazji: powiedzmy, że dochodzą jeszcze dwie kolumny z war3 i war4 by rozbudować kryteria zapytania. Czy najłatwiej będzie to zrobić analogicznie jak w Twoim przykładzie?
Już pokazuję o co chodzi, dla przykładu:
  1. SELECT sum(D1) AS Suma1,sum(D2) AS Suma2,sum(D3) AS Suma3,sum(D4) AS Suma4, Sum(IIf(War2=4 AND War3 IN ('4','6','7'),D5,NULL)) Suma5
  2. FROM sprawa
  3. WHERE War1=3 AND War4=5
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-2024 Invision Power Services, Inc.