Potrzebuję wskazówek i pomocy w kwestii Nie jestem całkowicie pewien, jak rozwiązać w SQL Server 2012. Myślę, że funkcje LAG
i LEAD
mogą być przydatne, ale ja nie jestem pewien.Porównywanie wierszy bieżącego miesiąca i poprzedniego miesiąca na kolumnie, SQL Server 2012
To co moje dane wygląda teraz:
=========================================
YearMonth LocationCode Active
=========================================
201405 123 0
201406 123 2
201409 211 1
201410 211 0
201411 214 0
201412 214 3
Mamy kolumnę YearMonth
, który pokazuje w jaki sposób stan wyglądało dla każdego locationCode
i Active
int który reprezentuje jakość dla każdego LocationCode
Cel:
Moim celem jest porównanie LocationCode
dla curra ent YearMonth
(nazwijmy go 201406
) i poprzedni Yearmonth
(nazwijmy go 201405
):
przykład:
=========================================
YearMonth LocationCode Active
=========================================
201405 123 0
201406 123 2
Zasadniczo co próbuję dowiedzieć się, jest jak porównać bieżącą miesiąc wiersz (201406) do wiersza z poprzedniego miesiąca (201405) na kolumnie o nazwie Active
.
Jeśli kolumna z wiersza bieżącego miesiąca jest niezerowa, a wartość Aktywna z poprzedniego miesiąca wynosiła zero, wówczas wiersz z bieżącego miesiąca kończy się na "Nowy" (1) inny (0).
Przykład znajduje się poniżej:
==================================================
YearMonth LocationCode Active New
===================================================
201405 123 0 0
201406 123 2 1
201409 211 1 0
201410 211 0 0
201411 214 0 0
201412 214 3 1
Jak mogę rozwiązać ten problem?
Mam szereg wariacji na ROW_NUMBER() szukających po raz pierwszy wiersz i Active wynosiła zero, a drugi wiersz będący niezerowa, ale nie poprawiła się, jak w wielu przypadkach. Ponieważ aktywny może być 1 w ciągu pewnego miesiąca, a inny nie, dlatego interesuję się techniką porównawczą na bieżący i poprzedni miesiąc. – user3197575