Într-un articol anterior am acoperit utilizarea de RÂNDURI PRECEDENTE și URMĂTOARE în peste clauză. Pentru acest exemplu, voi folosi aceeași bază de date și tabele pe care le-am creat în exemplul anterior pentru a afișa rânduri nelimitate atât înainte, cât și după.,

una dintre noile caracteristici disponibile în TSQL în SQL Server 2012 este rândurile UNBOUNDED precedent și rândurile UNBOUNDED următoarele opțiuni. Opțiunea nelimitată disponibilă atunci când se utilizează opțiunile precedente și următoare. Iată cum funcționează ele…

RÂNDURI NEMĂRGINITĂ PRECEDENT

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

În acest exemplu, MinRevenueToDate liste de cele mai mici venituri pentru acest rând și tot mai devreme rânduri ordonate după data în actualul departament id.

puteți vedea că rândul 1 stabilește MinRevenueToDate la 10030 și nu se schimbă până la rândul 7 cu un an de venit mai mic.,

apoi rândul 16 începe peste pentru un nou departament cu cel mai mic venit de funcționare până în prezent. Apoi rândul 21 se resetează la un număr de venituri mai mic.

RÂNDURI NEMĂRGINITĂ URMĂTOARELE

Acum, pentru exemplu de NEMĂRGINITĂ URMĂTOARELE:

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

în cazul în Care puteți vedea că min(Venituri) se calculează pe toate rândurile din rândul curent la sfârșitul setului partiționat de departmentID.,

NEMĂRGINITĂ opțiune este foarte utilă pentru a determina un calcul de la început de un set pentru rândul curent, sau din rândul curent la sfârșitul unui set sau grup.rețineți că această caracteristică a fost introdusă în SQL Server 2012 și nu este disponibilă în edițiile anterioare.

link-uri conexe

  • SQL interogare de formare
  • CTE date paginare
  • peste clauza cu rânduri și interval