A função de atraso no SQL Server é uma função Windows introduzida no SQL Server 2012. Esta função permite buscar os dados de linhas anteriores, conforme o valor de deslocamento especificado. Pense na função de atraso como a capacidade de acessar dados de linhas anteriores da linha atual.
Por exemplo, na linha atual, você pode acessar a linha anterior, que se torna a linha atual, e você pode acessar a linha anterior, e assim por diante.
Neste artigo, aprenderemos a usar a função de atraso no SQL Server usando vários exemplos.
Função sql server lag ()
Nós expressamos a sintaxe da função como:
Lag (expressão, deslocamento [, padrão])Parâmetros de função e valor de retorno
Na sintaxe acima, temos os seguintes parâmetros:
A função retorna o tipo de dados da expressão escalar.
Exemplos de atraso do servidor SQL
Vejamos um exemplo prático para entender melhor como usar a função de atraso. Vamos começar adicionando dados de amostra como mostrado:
Criar banco de dados SampledB;O conjunto de consultas acima deve retornar dados como:
Execute a função de atraso na coluna DBName, como mostrado na consulta de exemplo abaixo:
Selecione *, LAG (dbname, 1) sobre (Order by dbname) como anterior_db de lag_func;A consulta acima retorna uma saída como:
Observe que a primeira linha contém um valor nulo, pois não tem um valor anterior.
Exemplo 2:
Em vez de obter um valor nulo em que a linha não contém uma linha anterior, podemos definir um valor padrão, conforme mostrado na consulta de exemplo abaixo:
Selecione DBName, Lag (DBName, 1, 'N/A')A consulta acima retorna uma saída semelhante à acima. No entanto, em vez de nulo, obtemos a string especificada.
Exemplo 3: Valor de deslocamento personalizado
Também podemos buscar os valores em um valor de deslocamento personalizado. Por exemplo, para obter o valor de três linhas anteriores, podemos usar a consulta:
Selecione DBName, Lag (DBName, 3, 'N/A')O código de exemplo acima deve retornar o resultado como:
Aqui, as três primeiras colunas são nulas, pois os valores de deslocamento vão além do escopo das linhas disponíveis.
Exemplo 4: Partição por
Podemos criar partições lógicas de dados relacionados usando a cláusula de partição por. Podemos então aplicar a função de atraso a cada partição.
Considere o exemplo abaixo:
Selecione DBName, Paradigm, Lag (DBName, 1, 'N/A')A consulta acima retorna um exemplo de consulta como:
A consulta cria 6 partições com base no paradigma no resultado acima. Em cada partição, a função de atraso busca a linha anterior.
Conclusão
Este artigo ensinou a você como usar a função de atraso do SQL Server para recuperar a linha anterior de um conjunto resultante.
Obrigado pela leitura!