質問

こんにちは、私はいくつかの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 byoverを使用することができます。

:構文は(ノート、テストされていない)のようなものです
SELECT  
    AdviceNo,
    Registration,
    row_number() over
    (partition by AdviceNo
     order by Registration)     as Ordinal
FROM tblSalesDetail

partition byは少しgroup byのようですが、それは、データをロールアップしない - それあなたがパーティション内で計算されているものは何でもちょうどリセットされます。このケースでは、行数を計算しています 機能に建てを使用して、グループ内で登録することにより、それを並べ替えます。

TにOVER使用してMSDNドキュメントを議論し、このリンク-SQL。これは、基本的にはそれをサポートする他のプラットフォームでも同じです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top