Marek Woźniak

Marek Woźniak programista,
ekonomista, technik
telekomunikacji i
teletr...

Temat: odejmowanie sum sql

Witam
Jestem na początku drogi poznawania świata SQL. Od jakiegoś momentu borykam się z następującym problemem.
Mam dwie tabele, w których zawarte są wartości liczbowe dotyczące utargów:
W pierwszej utarg deklarowany przez sklep, w drugiej utarg przekazany przez sklep.
Chodzi mi o kontrolę pogotowia kasowego, czyli różnicy pomiędzy tymi wartościami z tych tabel, a dokładniej ich sum dla danego sklepu. Sklepów jest kilka.
Jeśli chodzi o pojedyncze pokazanie wyniku nie ma problemu, ale w przypadku kolejnych wartości narastających powielają się wyniki tworząc matematyczne błędy w obliczeniach.
Jeśli wypiszę z tabel pojedynczą sumę dla sklepu wartości się wyświetlają.
1. tabela

select Sklep, sum(Utarg) as 'utarg podany' from utargD group by Sklep

2. tabela

select Sklep, sum(Utarg) as 'utarg podany' from utargP group by Sklep

ale jeśli chcę otrzymać róznicę sum zatrzymałem się na takim zapytaniu ale podaje ono nieprawdziwe wyniki

select a.Sklep as 'sklep', (sum(a.Utarg) - sum(b.Utarg)) as 'wynik' from utargD as a, utargP as b where a.Sklep = b.Sklep group by a.Sklep

Proszę o pomoc bo już sporo włosów wyrwałem :)Ten post został edytowany przez Autora dnia 24.06.14 o godzinie 09:09
Bartek Borczyk

Bartek Borczyk Operator liczb i
słów

Temat: odejmowanie sum sql

Takie zapytanie zwraca Ci błędne wyniki?


SELECT [utargD].Sklep, Sum([utargD].Utarg-[utargP].Utarg) AS Roznica
FROM utargD INNER JOIN utargP ON [utargD].Sklep=[utargP].Sklep
GROUP BY [utargD].Sklep;
Marcin S.

Marcin S. Professional SQL
Server Administrator

Temat: odejmowanie sum sql

Spróbuj takie zapytanie(przerób tak, aby pasowało do twoich tabel):

select tb1.Sklep, tb1.suma, tb2.suma, tb1.suma - tb2.suma as różnica from (select utargD.Sklep as Sklep , SUM(utargD.utarg) as suma from utargD GROUP BY utargD.Sklep) as tb1 inner join
(select utargP.Sklep as Sklep, SUM(utargP.utarg) as suma from utargP GROUP BY utargP.Sklep) as tb2 on tb1.Sklep = tb2.Sklep


Wydaje mi się, że najpierw należy potworzyć grupowania dla każdej z tabel z osobna, a dopiero następnie to odejmować. W zapytaniu które napisałeś, grupujesz tylko po jednej tabeli.
Marek Woźniak

Marek Woźniak programista,
ekonomista, technik
telekomunikacji i
teletr...

Temat: odejmowanie sum sql

Dziękuję Marcin. O takie zapytanie mi chodziło. Jesteś WIELKI!!! Pozdrawiam

Następna dyskusja:

Sprytne SQL-ki




Wyślij zaproszenie do