K první otázce, proč to prostě nepoužít?
SELECT COUNT(*) FROM myTable
získat počet.
A u druhé otázky je primárním klíčem řádku to, co by se mělo použít k identifikaci konkrétního řádku. Nezkoušejte k tomu použít číslo řádku.
Pokud jste ve svém hlavním dotazu vrátili Row_Number(),
SELECT ROW_NUMBER() OVER (Order by Id) AS RowNumber, Field1, Field2, Field3
FROM User
Když se pak budete chtít vrátit o 5 řádků zpět, můžete vzít číslo aktuálního řádku a pomocí následujícího dotazu určit řádek s aktuálním řádkem -5
SELECT us.Id
FROM (SELECT ROW_NUMBER() OVER (ORDER BY id) AS Row, Id
FROM User ) us
WHERE Row = CurrentRow - 5