2012-02-02 1 views
0

У меня возникают проблемы с запросом, я хочу, чтобы он оценивал результат в зависимости от времени последнего изменения.Запрос ROW_NUMBER и PARTITION, возвращающий все строки, считанные как 1

SELECT 
    ROW_NUMBER() OVER (PARTITION BY ph.pricingHistoryId ORDER BY ph.changeRecorded DESC), 
    ph.* 
FROM 
    PriceHistory ph 

Он возвращает все 1 для ранжирования.

+0

Является ли ph.pricingHistoryId уникальным? Номер строки применяется к каждому разделу и сбрасывается для следующего раздела. – Glenn

+0

Да, это уникально - первичный ключ для таблицы – Sam

+1

Затем вам нужно разбить группу, которую вы хотите пронумеровать. Если весь набор, удалите всю часть «PARTITION BY ph.pricingHistoryId». – Glenn

ответ

4

Если pricingHistoryId является основным ключом, разделение им всегда возвращает ранг как 1, потому что не может быть повторяющихся первичных ключей!

1

Номер строки применяется к каждому разделу и сбрасывается для следующего раздела. Вам нужно «переделать» группу, которую вы хотите пронумеровать. Если вам нужна одна последовательность по всему набору результатов, полностью удалите «PARTITION BY ph.pricingHistoryId» и просто сохраните часть «ORDER BY».

0

Согласен с @Akhil. Это означает, что ph.pricingHistoryId уникален.

 Смежные вопросы

  • Нет связанных вопросов^_^