[SQL] Sumowanie i grupowanie wyników z kilku zapytań SQL
Ostatnio zmodyfikowano 2013-06-16 13:12
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. |
|
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 |
|
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. |
|
« 1 » |