i en tidigare artikel omfattade jag användningen av rader före och efter i över-klausulen. I det här exemplet kommer jag att använda samma databas och tabeller som jag skapade i föregående exempel för att visa rader som är obundet både före och efter.,
en av de nya funktionerna som finns tillgängliga i TSQL i SQL Server 2012 är raderna som inte är avgränsade före och raderna som inte är avgränsade efter alternativ. Alternativet obundet i tillgängligt när du använder föregående och följande alternativ. Så här fungerar de…
rader som inte föregår
-- ROWS UNBOUNDED PRECEDINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS UNBOUNDED PRECEDING) as MinRevenueToDatefrom REVENUEorder by departmentID, year;
i det här exemplet listar MinRevenueToDate De lägsta intäkterna för den här raden och alla tidigare rader som beställts efter datum i det aktuella avdelnings-id: t.
Du kan se att rad 1 anger Minrevenuetodatet till 10030, och det ändras inte förrän rad 7 med ett lägre intäktsår.,
sedan börjar rad 16 för en ny avdelning med den lägsta löpande intäkterna hittills. Sedan återställs rad 21 till ett lägre intäktsnummer.
rader som är ogrundade efter
nu för exemplet med ogrundade följande:
-- 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;
där du kan se att min(intäkter) beräknas över alla rader från den aktuella raden till slutet av den uppsättning som partitioneras av avgångstiden.,
det obegränsade alternativet är mycket användbart för att bestämma en beräkning från början av en uppsättning till den aktuella raden, eller från den aktuella raden till slutet av en uppsättning eller grupp.
tänk på att den här funktionen introducerades i SQL Server 2012 och är inte tillgänglig i tidigare utgåvor.
Relaterade Länkar
- SQL Query Training
- CTE Data personsökning
- över klausul med rader och intervall
Lämna ett svar