DECLARE @PageNum AS INT;
DECLARE @PageSize AS INT;
SET @PageNum = 2;
SET @PageSize = 10;
WITH OrdersRN AS
(
SELECT ROW_NUMBER() OVER(ORDER BY DimProduct.ProductKey) AS RowNum,
DimProduct.ProductKey,
DimProduct.EnglishProductName as Product,
DimProductSubcategory.ProductSubcategoryKey as SubCategoryKey,
DimProductSubcategory.EnglishProductSubcategoryName as SubCategory,
DimProductCategory.ProductCategoryKey as CategoryKey,
DimProductCategory.EnglishProductCategoryName as Category
FROM DimProduct INNER JOIN
DimProductSubcategory ON DimProduct.ProductSubcategoryKey = DimProductSubcategory.ProductSubcategoryKey INNER JOIN
DimProductCategory ON DimProductSubcategory.ProductCategoryKey = DimProductCategory.ProductCategoryKey
)
SELECT *
FROM OrdersRN
WHERE RowNum BETWEEN (@PageNum - 1) * @PageSize + 1
AND @PageNum * @PageSize
ORDER BY ProductKey;