In een vorig artikel had ik betrekking op het gebruik van rijen voor en na in de over-clause. Voor dit voorbeeld ga ik dezelfde database en tabellen gebruiken die ik in het vorige voorbeeld heb gemaakt om rijen grenzeloos te tonen die zowel voorafgaan Als volgen.,

een van de nieuwe functies die beschikbaar zijn in TSQL in SQL Server 2012 is de rijen onbegrensd voorafgaande en de rijen onbegrensd volgende opties. De onbegrensde optie is beschikbaar bij het gebruik van de voorgaande en volgende opties. Dit is hoe ze werken…

rijen UNBOUNDED voorafgaand aan

-- ROWS UNBOUNDED PRECEDINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS UNBOUNDED PRECEDING) as MinRevenueToDatefrom REVENUEorder by departmentID, year;

in dit voorbeeld geeft de MinRevenueToDate de laagste Inkomsten voor deze rij en alle eerdere rijen gesorteerd op datum in de huidige afdeling id.

u kunt zien dat Rij 1 het MinRevenueToDate instelt op 10030, en het verandert niet tot rij 7 met een lager omzetjaar.,

dan begint rij 16 opnieuw voor een nieuwe afdeling met de laagste lopende inkomsten tot nu toe. Vervolgens wordt rij 21 gereset naar een lager omzetcijfer.

rijen UNBOUNDED FOLLOWING

nu voor het voorbeeld van UNBOUNDED FOLLOWING:

-- 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;

waar u kunt zien dat de min(inkomsten) wordt berekend over alle rijen van de huidige rij tot het einde van de set, verdeeld door het departmentID.,

de onbegrensde optie is zeer nuttig om een berekening te bepalen vanaf het begin van een verzameling tot de huidige rij, of vanaf de huidige rij tot het einde van een verzameling of groep.

Houd er rekening mee dat deze functie werd geïntroduceerd in SQL Server 2012, en is niet beschikbaar in eerdere edities.

gerelateerde Links

  • SQL Query Training
  • CTE data Paging
  • over clausule met rijen en bereik