Funkcja opóźnienia na SQL Server to funkcja Windows wprowadzona w SQL Server 2012. Ta funkcja pozwala pobierać dane z poprzednich wierszy zgodnie z określoną wartością przesunięcia. Pomyśl o funkcji opóźnienia jako o możliwości dostępu do danych z poprzednich wierszy z bieżącego wiersza.
Na przykład z bieżącego wiersza możesz uzyskać dostęp do poprzedniego wiersza, który staje się bieżącym wierszem, i możesz uzyskać dostęp do poprzedniego wiersza i tak dalej.
W tym artykule dowiemy się, jak korzystać z funkcji opóźnienia na serwerze SQL, korzystając z różnych przykładów.
Funkcja SQL Server Lag ()
Wyrażamy składnię funkcji jako:
lag (wyrażenie, przesunięcie [, domyślnie])Parametry funkcji i wartość zwracania
W powyższej składni mamy następujące parametry:
Funkcja zwraca typ danych wyrażenia skalarnego.
Przykłady opóźnienia serwera SQL
Spójrzmy na praktyczny przykład, aby lepiej zrozumieć, jak korzystać z funkcji opóźnienia. Zacznijmy od dodania przykładowych danych, jak pokazano:
Utwórz bazę danych sampledB;Powyższy zestaw zapytania powinien zwrócić dane jako:
Uruchom funkcję opóźnienia w kolumnie DBName, jak pokazano na przykładowym zapytaniu poniżej:
Wybierz *, lag (dbname, 1) ponad (zamówienie według dbname) jako poprzedni_db z lag_func;Powyższe zapytanie zwraca dane wyjściowe jako:
Zauważ, że pierwszy wiersz zawiera wartość zerową, ponieważ nie ma poprzedniej wartości.
Przykład 2:
Zamiast uzyskać wartość zerową, w której wiersz nie zawiera poprzedniego wiersza, możemy ustawić wartość domyślną, jak pokazano na przykładowym zapytaniu poniżej:
Wybierz dbname, lag (dbname, 1, „n/a”)Powyższe zapytanie zwraca podobne dane wyjściowe jak powyżej. Jednak zamiast NULL otrzymujemy określony ciąg.
Przykład 3: niestandardowa wartość przesunięcia
Możemy również pobrać wartości w niestandardowej wartości przesunięcia. Na przykład, aby uzyskać wartość trzech poprzednich wierszy, możemy użyć zapytania:
Wybierz dbname, lag (dbname, 3, „n/a”)Powyższy przykładowy kod powinien zwrócić wynik jako:
Tutaj pierwsze 3 kolumny są zerowe, ponieważ wartości przesunięcia wykraczają poza zakres dostępnych wierszy.
Przykład 4: partycja przez
Możemy tworzyć logiczne partycje powiązanych danych za pomocą partycji według klauzuli. Następnie możemy zastosować funkcję opóźnienia do każdej partycji.
Rozważ poniższy przykład:
Wybierz dbname, paradygmat, lag (dbname, 1, „n/a ')Powyższe zapytanie zwraca przykładowy zestaw zapytania jako:
Zapytanie tworzy 6 partycji opartych na paradygmacie w powyższym wyniku. Na każdej partycji funkcja opóźnienia pobiera poprzedni rząd.
Wniosek
W tym artykule nauczył Cię, jak korzystać z funkcji opóźnienia SQL Server do pobrania poprzedniego wiersza z uzyskanego zestawu.
Dziękuję za przeczytanie!