Моя задача - возвращать заказы между диапазонами @FirstOrderDate и @LastOrderDate, однако возвращаются только те строки, которые должны принадлежать странице, определенной @Page и @PageSize.
Например, если существует 1000 заказов с датой заказа, которая находится между @FirstOrderDate и @LastOrderDate, а @PageSize равно 100 с @Page как 1, то будут возвращены первые 100 из 1000 заказов. Если @Page = 2, то будут возвращены заказы 101 - 200 и т. Д.
Моя попытка выполнить конкретный запрос с использованием OFFSET:
DECLARE
@FirstOrderDate DATE,
@LastOrderDate DATE,
@PageSize INT,
@Page INT;
SELECT
O.OrderID,
O.OrderDate,
O.CustomerID,
O.SalespersonPersonID
FROM Sales.Orders O
WHERE O.OrderDate BETWEEN @FirstOrderDate AND @LastOrderDate
ORDER BY O.OrderDate
IF @Page = 1
OFFSET 0 ROWS FETCH NEXT @PageSize ROWS ONLY;
ELSE
OFFSET @Page * @PageSize ROWS FETCH NEXT @PageSize ROWS ONLY;
Я новичок в TSQL и неправильно использую IF-Else. Что мне действительно нужно сделать, это вернуть диапазон строк, используя @Page и @PageSize. Мне трудно найти синтаксис для этого, особенно в выражении IF-Else или Case.
Любая помощь будет высоко ценится.