SQL sumowanie warunkowe

0

Witam

Na wstępie napiszę, że jestem początkowym SQLowcem i dopiero się uczę. Póki co umiem wyciągnąć podstawowe dane z wielu tabel, ale mam przypadek który mnie przerasta. Myślę że przypadek jest podobny do EXCELowej funkcji SUMA.JEŻELI z wieloma warunkami. Chodzi o to żeby zsumować wszystkie wartości po DATACH, przy czym dla każdej NAZWY data minimalna musi być mniejsza bądź równa od '2014.01.01' oraz data maksymalna musi być większa bądź równa od '2015.12.31' i dla tylko dla takich przypadków sumujemy wartości po DACIE. Proszę o pomoc w zmierzeniu się z tym wyzwaniem.

Tabela wygląda mniej więcej tak:

DATA NAZWA WARTOŚĆ
2014-01-01 nazwa1 663
... nazwa1 834
2014-12-31 nazwa1 269
2014-05-01 nazwa2 193
... nazwa2 370
2014-12-31 nazwa2 450
2013-05-01 nazwa3 507
... nazwa3 666
2014-11-30 nazwa3 664
0

Nie bardzo wiem czy chodzi Ci o

SELECT Data, Nazwa, SUM(Wartość) WHERE Data >= '2014-01-01'  AND Data <= '2015-12-31' GROUP BY Data, Nazwa

czy może o

SELECT Nazwa, SUM(Wartość) WHERE Data >= '2014-01-01'  AND Data <= '2015-12-31' GROUP BY Nazwa
0

Nie chodzi mi ani o jedno ani o drugie. Ma to działać w ten sposób, że dla każdej nazwy wyciąga minimalną i maksymalną datę i sprawdza czy te daty spełniają warunki, tzn czy data minimalna jest mniejsza bądź równa niż 2014.01.01 oraz czy data maksymalna jest większa bądź równa niż 2014.12.31. Jeżeli dla danej nazwy jest spełniony ten warunek to ma być uwzględniona w sumie grupowanej po dacie. Czyli w załączonym przykładzie tylko NAZWA1 spełnia warunki więc zapytanie powinno wypluć coś takiego:

DATA SUM_WARTOŚĆ
2014-01-01 663
... 834
2014-12-31 269
1

Nie sprawdzałem czy działa, ale próbowałbym coś takiego:

SELECT data, SUM(wartość)
FROM tab_name outerr,
(SELECT nazwa, MIN(DATA), MAX(DATA)
FROM tab_name
GROUP BY nazwa
HAVING MIN(DATA) <=TO_DATE('2014/01/01') AND MAX(DATA)>=TO_DATE('2014/12/31')) innerr
WHERE outerr.nazwa = innerr.nazwa
GROUP BY DATA

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