Rozwiązanie SQL, które łączy „WIERSZE MIĘDZY BEZPIECZNYM WSTĘPNYM A BIEŻĄCYM WIERSZEM” i „SUM” zrobiło dokładnie to, co chciałem osiągnąć. Dziękuję bardzo!
Jeśli to może komukolwiek pomóc, oto moja sprawa. Chciałem kumulować +1 w kolumnie, ilekroć twórca zostanie znaleziony jako „Some Maker” (przykład). Jeśli nie, nie przyrost, ale pokaż poprzedni wynik przyrostu.
Więc ten fragment SQL:
SUM( CASE [rmaker] WHEN 'Some Maker' THEN 1 ELSE 0 END)
OVER
(PARTITION BY UserID ORDER BY UserID,[rrank] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Cumul_CNT
Pozwolił mi zdobyć coś takiego:
User 1 Rank1 MakerA 0
User 1 Rank2 MakerB 0
User 1 Rank3 Some Maker 1
User 1 Rank4 Some Maker 2
User 1 Rank5 MakerC 2
User 1 Rank6 Some Maker 3
User 2 Rank1 MakerA 0
User 2 Rank2 SomeMaker 1
Objaśnienie powyższego: Zaczyna się liczenie „jakiegoś twórcy” od 0, Znaleziono jakiegoś twórcę i dajemy +1. Dla użytkownika 1, MakerC jest znaleziony, więc nie robimy +1, ale zamiast tego pionowa liczba niektórych Maker zostaje zablokowana do 2, aż do następnego rzędu. Partycjonowanie odbywa się według użytkownika, więc kiedy zmieniamy użytkownika, skumulowana liczba wraca do zera.
Jestem w pracy, nie chcę zasługiwać na tę odpowiedź, wystarczy podziękować i pokazać mój przykład na wypadek, gdyby ktoś znalazł się w tej samej sytuacji. Próbowałem połączyć SUMĘ i PARTYCJĘ, ale niesamowita składnia „ROWS MIĘDZY UNBOUNDED PRECEDING A CURRENT ROW” zakończyła zadanie.
Dzięki! Groaker