Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SQL] Sumowanie i grupowanie wyników z kilku zapytań SQL

Ostatnio zmodyfikowano 2013-06-16 13:12
Autor Wiadomość
berkov
Temat założony przez niniejszego użytkownika
[SQL] Sumowanie i grupowanie wyników z kilku zapytań SQL
» 2013-06-15 13:30:08
Zalozmy ze mam nastepujaca tabelke:
DATA | Prac1 | DniowkaDla1 | Prac2 | DniowkaDla2 | ... | ... | ... etc

Chcialbym miec mozliwosc zsumowania dniowek dla danego pracownika (oraz w danym okresu ale to narazie pominmy tutaj dla ulatwienia sprawy) w nastepujacy sposob:
Wienczyslaw - 2000 zl

Problem tylko jest jeden, ze np Wienczyslaw moze czasami znalezc sie w Prac1 a czasami w Prac2 i wtedy jego dniowka bedzie odpowiednio w DniowkaDla1 lub DniowkaDla2 (niestety zalezy w jakiej kolejnosci osoba wprowadzajaca dane do tabeli wpisze osoby na zmianie).

Mam nastepujace zdanie sql:
SELECT  Prac1 AS Pracownik, SUM(DniowkaDla1) AS Wyplata
FROM tabela1
WHERE Prac1 = 'Wienczyslaw'
GROUP BY Prac1
UNION
SELECT  Prac2, SUM(DniowkaDla2) AS wyplata
FROM tabela1
WHERE Prac2 = 'Wienczyslaw'
GROUP BY Prac2

Niestety w takim zapytaniu zamiast dostac jeden rzad dla samego wienczyslawa ktory zarobil 2000zl dostane np:
Wienczyslaw - 1500 zl
Wienczyslaw - 500 zl

Czy da sie to jakos zsumowac do jednego rzedu?

Dodam tylko ze niestety mam dosc ograniczony sql poniewaz zapytania wysylam do Accessa przez ADO (COM) z WINAPI i sa pewne rzeczy ktorych ten rodzaj komunikacji nie obsluguje np nie laczy zapytan (SELECT xxx FROM yyy ....) + (SELECT aaa from bbb ..).. to zawsze musi byc jedno dlugie zapytanie (jak wyzej).



p.s.
Generalnie chodzi o to by na koncu dostac liste wszystkich pracownikow na raz:
Wiewnczyslaw 2000zl
Bonifacy 1500zl
Alojzy 3001zl itd
Ale mysle ze jak ktos podpowie mi jak to zrobic dla jednego to z lista wielu pracownikow juz dam rady sam.

z gory dzieki
b.



P-85628
berkov
Temat założony przez niniejszego użytkownika
» 2013-06-16 11:41:21
AND THE ANSWEEERRRR IIIIISSSSSS:

Select Pracownik  ,sum(Wyplata) as xWyplatax
  from (


  SELECT  Prac1 AS Pracownik, SUM(DniowkaDla1) AS Wyplata
  FROM tabela1
  WHERE Prac1 = 'Wienczyslaw'
  GROUP BY Prac1
  UNION
  SELECT  Prac2, SUM(DniowkaDla2) AS wyplata
  FROM tabela1
  WHERE Prac2 = 'Wienczyslaw'
  GROUP BY Prac2


     )
 GROUP BY Pracownik

chlopaki z SQL forum tez poradza:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=186110
P-85668
DejaVu
» 2013-06-16 13:12:21
Grupowanie w podrzędnych zapytaniach jest zbędne :) Niepotrzebnie spowalnia czas jego wykonania wymuszając utworzenie cacheowanych wyników. W każdym razie problem jest rozwiązany, więc temat zamykam.
P-85675
« 1 »
  Strona 1 z 1