Połączenie zapytań z SUM

0

Cześć,
Mam dwa zapytania SQL, które liczą sumę tej samej kolumny, ale z innymi ustawieniami. Oba są bardzo podobne - drugie jest nieco bardziej rozbudowane. Zapytania wyglądają jak poniżej.
Moje pytanie brzmi: czy da się zrobić z tych dwóch zapytań jedno zapytanie, które zwróci sumę tych dwóch sum - albo inaczej: sumę wszystkich elementów w kolumnie kwota, które spełniają warunek w pierwszym zapytaniu **lub **drugim zapytaniu?

--zapytanie nr 1
SELECT
	SUM(kd.kwota_do)
FROM
	Kwoty kd,
	Ewidencja ed
WHERE
	ed.Numer = 1
	AND kd.DokumentID = ed.EDNID
	AND kd.Segment != ''
--zapytanie nr 2
SELECT
	SUM(kd.kwota_do)
FROM
	Kwoty kd,
	Ewidencja ed,
	Kategorie k 
WHERE
	ed.Numer = 1
	AND kd.DokumentID = ed.EDNID
	AND kd.Segment = ''
	AND kd.Kdd_KatID != ''
	AND k.Kat_KatID = kd.Kdd_KatID
	AND k.Kat_KontoSegmentWN != ''

Z góry dzięki za pomoc.

0
select sum(suma) from 
(
SELECT
    SUM(kd.kwota_do) as suma 
FROM
    Kwoty kd,
    Ewidencja ed
WHERE
    ed.Numer = 1
    AND kd.DokumentID = ed.EDNID
    AND kd.Segment != ''

union all 
SELECT
    SUM(kd.kwota_do) as suma 
FROM
    Kwoty kd,
    Ewidencja ed,
    Kategorie k 
WHERE
    ed.Numer = 1
    AND kd.DokumentID = ed.EDNID
    AND kd.Segment = ''
    AND kd.Kdd_KatID != ''
    AND k.Kat_KatID = kd.Kdd_KatID
    AND k.Kat_KontoSegmentWN != ''
)
1
SELECT
    SUM(kd.kwota_do)
FROM
    Kwoty kd,
    Ewidencja ed,
    Kategorie k 
WHERE
    ed.Numer = 1
    AND kd.DokumentID = ed.EDNID
    AND (kd.Segment = '' AND kd.Kdd_KatID != '' AND k.Kat_KatID = kd.Kdd_KatID AND k.Kat_KontoSegmentWN != ''
      OR kd.Segment != ''
0

Dzięki wielkie @abrakadaber! Tak właśnie myślałem, ale popełniłem głupi błąd i wychodziły mi głupoty... :-)

0

Ehh, a jednak chyba ciągle jest coś nie tak.
Gdy ten drugi warunek po OR nie jest spełniony (jest wypełnione pole segment) to zapytanie mnoży wynik przez liczbę pozycji w kategorii (mimo, że kategoria nie została podana (jest pusta) i ta tabela w ogóle nie powinna być brana pod uwagę :-(
Jakieś koncepcje jak to naprawić? :-/

0
SELECT
    SUM(kd.kwota_do)
FROM
    Kwoty kd,
    Ewidencja ed
    left join Kategorie k on k.Kat_KatID = kd.Kdd_KatID
WHERE
    ed.Numer = 1
    AND kd.DokumentID = ed.EDNID
    AND (kd.Segment = '' AND kd.Kdd_KatID != '' AND not k.Kat_KatID is null AND k.Kat_KontoSegmentWN != ''
      OR kd.Segment != ''

BTW dlaczego porównujesz kolumny liczbowe w ten sposób kd.Kdd_KatID != '' bo zakładam, że pole ID jest liczbowe

1 użytkowników online, w tym zalogowanych: 0, gości: 1