Cześć,
zacząłem się ostatnio uczyć T-SQL'a więc wielkim znawcą póki co nie jestem, więc mój problem być może jest trywialny za co z góry przepraszam.
Stworzyłem prostą tabelę, która zawiera wyniki meczów. W ramach ćwiczenia napisałem poniższe zapytanie
SELECT *,
SUM(GOLE_D) OVER(PARTITION BY GOSPODARZ
ORDER BY GOSPODARZ
ROWS UNBOUNDED PRECEDING
) AS X1,
SUM(GOLE_D) OVER(PARTITION BY GOSPODARZ
ORDER BY GOSPODARZ
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
) AS X2,
SUM(GOLE_D) OVER(PARTITION BY GOSPODARZ
ORDER BY GOSPODARZ
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
) AS X3
FROM MECZE;
którego celem jest liczenie sumy goli (GOLE_D - dokładnie gole strzelone przez gospodarzy):
a) narastająco od początku partycji do danego wiersza - działa poprawnie (X1),
b) od wiersza poprzedzającego do następującego - działa poprawnie (X3),
oraz
c) spełzająco od danego wiersza do końca partycji (X2).
I tutaj się pojawia problem. Otóż wynik w kolumnach X1 oraz X2 jest dokładnie taki sam.
Dlaczego zastosowanie ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING daje ten sam wynik co ROWS UNBOUNDED PRECEDING?
Z góry dzięki za pomoc :)