För den första frågan, varför inte bara använda?
SELECT COUNT(*) FROM myTable
för att få räkningen.
Och för den andra frågan är den primära nyckeln för raden vad som ska användas för att identifiera en viss rad. Försök inte använda radnumret för det.
Om du returnerade Row_Number() i din huvudfråga,
SELECT ROW_NUMBER() OVER (Order by Id) AS RowNumber, Field1, Field2, Field3
FROM User
När du sedan vill gå 5 rader tillbaka kan du ta det aktuella radnumret och använda följande fråga för att bestämma raden med nuvarande rad -5
SELECT us.Id
FROM (SELECT ROW_NUMBER() OVER (ORDER BY id) AS Row, Id
FROM User ) us
WHERE Row = CurrentRow - 5