SQL получает продукты каждой категории с OFFSET / FETCH - PullRequest
0 голосов
/ 25 октября 2018

У меня есть этот запрос, чтобы напечатать 10 товаров для каждой категории

WITH MyRowSet AS (SELECT *, 
        ROW_NUMBER() OVER (PARTITION BY p.cateID ORDER BY p.cateID DESC) 
        AS RowNum 
        FROM Product p )  
SELECT TOP 100 * FROM MyRowSet WHERE RowNum <= 10

Затем я хочу получить следующие 100 товаров с OFFSET / FETCH.Как я могу это сделать?

1 Ответ

0 голосов
/ 25 октября 2018

Вы должны использовать предложение order by, чтобы указать, какие строки выбрать, а какие сместить:

WITH MyRowSet AS (SELECT *, 
        ROW_NUMBER() OVER (PARTITION BY p.cateID ORDER BY p.cateID DESC) 
        AS RowNum 
        FROM Product p )  
SELECT * 
FROM MyRowSet 
WHERE RowNum <= 10
ORDER BY p.cateId, rownum
OFFSET 100 ROWS FETCH NEXT 100 ROWS ONLY;
...