Em um artigo anterior abordei o uso de LINHAS ANTERIORES e SEGUINTES da cláusula. Para este exemplo eu vou usar o mesmo banco de dados e tabelas que eu criei no exemplo anterior para mostrar linhas sem limites, tanto precedendo e seguindo.,
uma das novas funcionalidades disponíveis no TSQL no SQL Server 2012 é as linhas sem restrições anteriores e as linhas sem restrições seguintes opções. A opção não limitada disponível ao usar as opções anteriores e seguintes. Aqui está como eles funcionam …
linhas sem limites anteriores a
-- ROWS UNBOUNDED PRECEDINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS UNBOUNDED PRECEDING) as MinRevenueToDatefrom REVENUEorder by departmentID, year;
neste exemplo, o Minrevenuetodato lista a receita mais baixa para esta linha e todas as linhas anteriores ordenadas por data no ID do Departamento actual.
Você pode ver que a linha 1 define o Minrevenuetodato para 10030, e não muda até a linha 7 com um ano de receita mais baixa.,
em seguida, a linha 16 começa de novo para um novo departamento com a menor receita corrente até à data. Em seguida, a linha 21 reinicia para um número de receita menor.
LINHAS UNBOUNDED SEGUINTE
Agora, para o exemplo de UNBOUNDED SEGUINTE:
-- ROWS UNBOUNDED FOLLOWINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as MinRevenueBeyondfrom REVENUEorder by departmentID, year;
, Onde você pode ver que o min(Receitas) é calculado sobre todas as linhas a partir da linha atual para o fim do jogo particionada por departmentID.,
a opção ilimitada é muito útil para determinar um cálculo desde o início de um conjunto até à linha actual, ou desde a linha actual até ao fim de um conjunto ou grupo.
tenha em mente que este recurso foi introduzido no SQL Server 2012, e não está disponível em edições anteriores.
ligações relacionadas
- SQL Query Training
- CTE Data Paging
- OVER Clause with ROWS and RANGE
Deixe uma resposta