I en foregående artikel, jeg dækkede brugen af RÆKKER før og EFTER i over klausul. I dette eksempel vil jeg bruge den samme database og tabeller, som jeg oprettede i det foregående eksempel for at vise rækker ubegrænset både før og efter.,

en af de nye funktioner, der er tilgængelige i TS .l i s .l Server 2012, er rækkerne ubegrænset foregående og rækkerne ubegrænset følgende muligheder. Den ubegrænsede mulighed er tilgængelig, når du bruger de foregående og følgende muligheder. Her er, hvordan de arbejder…

RÆKKER UNBOUNDED FOREGÅENDE

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

I dette eksempel, MinRevenueToDate viser de laveste indtægter for denne række, og alle ældre rækker sorteret efter dato i den nuværende afdeling-id.

Du kan se, at række 1 sætter Minrevenuetodatet til 10030, og det ændres ikke før række 7 med et lavere indtægtsår.,

så begynder række 16 forfra for en ny afdeling med den hidtil laveste løbende indtægt. Derefter nulstilles række 21 til et lavere indtægtsnummer.

RÆKKER UNBOUNDED FØLGENDE:

Nu for eksempel på GRÆNSELØS FØLGENDE:

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

Hvor kan du se, at min(Indtægter) er beregnet over alle de rækker fra den aktuelle række til slutningen af sættet partitioneret af departmentID.,

Den UBEGRÆNSEDE mulighed er meget nyttige til at bestemme en beregning fra begyndelsen af et sæt til den aktuelle række, eller fra den aktuelle række til udgangen af et sæt eller en gruppe.

Husk, at denne funktion blev introduceret i s .l Server 2012 og ikke er tilgængelig i tidligere udgaver.

Related Links

  • SQL-Forespørgsel Uddannelse
  • CTE Data Personsøgning
  • OVER Klausul med RÆKKER og OMRÅDE