質問
こんにちは、私はいくつかのSQLを持っている...
SELECT
AdviceNo,
Registration
FROM tblSalesDetail
... のようなものを作り出す
ADV00001, ABC123
ADV00001, CDE564
ADV00002, FGE432
ADV00003, HUY789
ADV00003, MJS532
ADV00003, JFY428
缶だれでも、私は次のことを確認するために、それを調整したい方法を教えてください?
ADV00001, ABC123, 1
ADV00001, CDE564, 2
ADV00002, FGE432, 1
ADV00003, HUY789, 1
ADV00003, MJS532, 2
ADV00003, JFY428, 3
解決
どのようにOracleの分析関数についての?
これはRANKが有用である古典的な例である; - )
SELECT AdviceNo,
Registration,
RANK () OVER (PARTITION BY AdviceNo ORDER BY Registration ASC) MY_RANK
FROM tblSalesDetail;
他のヒント
あなたはグループに基づいてカウントをリセットするためにrow_number()
句でpartition by
とover
を使用することができます。
SELECT
AdviceNo,
Registration,
row_number() over
(partition by AdviceNo
order by Registration) as Ordinal
FROM tblSalesDetail
partition by
は少しgroup by
のようですが、それは、データをロールアップしない - それあなたがパーティション内で計算されているものは何でもちょうどリセットされます。このケースでは、行数を計算しています
機能に建てを使用して、グループ内で登録することにより、それを並べ替えます。
TにOVER使用してMSDNドキュメントを議論し、このリンク-SQL。これは、基本的にはそれをサポートする他のプラットフォームでも同じです。
所属していません StackOverflow