2012-02-02 4 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

行番号は各パーティションに適用され、次のパーティション用にリセットされます。番号を付けるグループを「分割する」必要があります。結果セット全体に1つのシーケンスが必要な場合は、「PARTITION BY ph.pricingHistoryId」を完全に削除し、「ORDER BY」部分だけを残しておきます。

0

@Akhilと同意します。それは、ph.pricingHistoryIdが一意であることを意味します。

関連する問題