У меня есть таблица, которая содержит данные о товаре с информацией о расценках (оценка, данная клиенту, указанная торговым представителем по конкретным продуктам) для конкретных учетных записей. У этого также есть финансовый квартал и финансовая неделя, соответствующая дате, которую это было создано. Может быть несколько цитат для одного и того же продукта и одной и той же учетной записи в зависимости от обратной связи между торговым представителем и клиентом. Я хочу ранжировать эти котировки на основе комбинации аккаунта и продукта и упорядочить их по котировке, которая была создана последней. Вот запрос, который я использую:
Обратите внимание, что я также пытался использовать Rank и Dense_Rank вместо row_number
SELECT * FROM
(SELECT
Account_ID
,Quote_Number
,Product
,Fiscal_Quarter
,Fiscal_Week
,ROW_NUMBER () OVER (PARTITION BY Account_ID, Product ORDER BY
QUOTE_CREATE_DATE DESC, QTE_NUM_VAL DESC) AS ROWNUM
FROM
tbl_Quotes_Data
WHERE
Fiscal_Quarter IN ('2018-Q4')
) X
Однако, когда я запускаю этот запрос, он отлично работает для некоторых учетных записей, в то время как для большинства учетных записей номер строки фиксируется неправильно, и я не могу понять, почему. Я вижу номер строки, начинающийся только с 600 для некоторых учетных записей, в то время как для других учетных записей он даже начинается с 10000. Поскольку следующий шаг включает рассмотрение номеров строк, которые ранжируются как 1, это создает проблему. Был бы очень признателен, если бы кто-нибудь мог помочь мне понять причину такого поведения кода.