Select Row_Number() over (order by BirthDate asc) as RowNumber, E.EmployeeID, E.ManagerID,
E.BirthDate From HumanResources.Employee E
where Row_Number() over (order by BirthDate asc) > 100
and Row_Number() over (order by BirthDate asc) < 120
With mCte (RowNumber, EmployeeID, ManagerID, BirthDate)
As
(
Select Row_Number() over (order by BirthDate asc) as RowNumber, E.EmployeeID,
E.ManagerID, E.BirthDate
From HumanResources.Employee E
)
Select *
From mCte C
Where RowNumber Between 100 and 120
CREATE procedure [GetEmployeesPaged]
@nStartRowNum int = 100,
@nStartRowCount int = 10
as
Select Row_Number() over (order by BirthDate asc) as RowNumber,
E.EmployeeID, E.ManagerID, E.BirthDate
Where RowNumber Between @nStartRowNum and (@nStartRowNum + @nStartRowCount -1)
With
EmpCTE (EmpID, MgrID, Level)
As (
Select E.EmployeeID, E.ManagerID, 1
Where ManagerID is null
UNION ALL
Select E.EmployeeID, E.ManagerID, Level + 1
Inner Join EmpCTE on EmpCTE.EmpID = E.ManagerID
),
myCTE
Select Row_Number() over (order by Level asc) as RowNum, *
From EmpCTE
Select C.RowNum, C.EmpID, CE.FirstName+ ' ' + CE.LastName as EmpName,
C.MgrID, ME.FirstName+ ' ' + ME.LastName as MgrName, C.Level
From myCTE C
Inner Join Person.Contact CE on C.EmpID = CE.ContactID
Left Outer Join Person.Contact ME on C.MgrID = ME.ContactID
Where RowNum Between @nStartRowNum and (@nStartRowNum + @nStartRowCount -1)