現在、次の属性を持つデータを返すクエリがあります。
- 結果で一意であることが保証されている数値A (ソーステーブルではない)。結果はA順に並べられますが、結果のAの値は必ずしも連続しているとは限りません。
- 同じグループの一部としてタグ付けされた、複数の行に対して繰り返されるキーB。Aと同じテーブルから来ています。
例:
+--+-+-+
|id|A|B|
+--+-+-+
| 5|1|2|
|15|3|2|
|12|4|5|
|66|6|5|
| 2|7|2|
+--+-+-+
結果で行番号を返す方法を説明する回答をここで確認しました。ただし、私が必要としているのは、Bごとに個別のカウントを維持しながら、(できれば1ベースの)注文番号を取得することです。次の表では、Cが望ましい結果です。
+--+-+-+-+
|id|A|B|C|
+--+-+-+-+
| 5|1|2|1|
|15|3|2|2|
|12|4|5|1|
|66|6|5|2|
| 2|7|2|3|
+--+-+-+-+
これは私の現在のSQLスキルを少し超えているので、ポインタに感謝します。既存の回答へのポインタを含みます!
編集:以下の両方の回答は、結果に関して同じように機能します(並べ替えに使用されるダミーのラッピングクエリを使用)。助けてくれてありがとう。最も効率的なクエリはどれですか?私の特定のユースケースでは、元のクエリから返される行の量が非常に多くなることは決してないことを考慮してください(たとえば、最大50行、それでも想像力の範囲です)。また、元のクエリには、他のリレーションからデータをフェッチするために使用される結合がありますが、それらは並べ替えやフィルタリングには関係ありません。最後に、すべての結果が同じBを持つことも、すべての結果が異なるBを持つことも可能です。これは、どちらの方向にも、またはその間のどこにでも行くことができます。