Ограничение результата SQL - PullRequest
0 голосов
/ 27 июня 2018

У меня есть запрос, где я пытаюсь получить результаты из таблицы:

SELECT P.P_CODE, P.P_JEWELRYTYPE,P.p_catalog, P_AVAILABLE, P_RESERVED , p.p_catalog
FROM products P 
WHERE 
P.p_catalog IN (8796093383256,8796093252184,8796093317720,8796093121112,8796093186648);

Я хочу запрос, в котором я могу ограничить количество результатов до 500 для каждого типа каталога. Как мне изменить мой запрос, чтобы добиться этого?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Аналитическая функция row_number() будет работать, которая будет присваивать номера строк каждому p_catalog, чтобы вы могли фильтровать это условие в предложении WHERE во внешнем запросе:

SELECT *
FROM (
  SELECT 
    p.P_CODE, p.P_JEWELRYTYPE, p.p_catalog, p.P_AVAILABLE, p.P_RESERVED, p.p_catalog,
    row_number() over (partition by p.p_catalog) as rn
  FROM products p
  WHERE p.p_catalog IN (8796093383256,8796093252184,8796093317720,8796093121112,8796093186648)
) p
WHERE rn <= 500;
0 голосов
/ 27 июня 2018

Использование row_number():

select p.*
from (select p.*, row_number() over (partition by catalog order by null) as seqnum
      from products p
     ) p
where p.seqnum <= 500;

Вы можете поместить фильтрацию where во внутренний или внешний запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...