SQLでデータを取得する場合に、
「▲▲の区分の先頭では明細の項目を変えたい」
という場面ってありませんか?
簡単に出来そうだけど・・・さて、どうしよう。
SQLで?アプリケーションで?「よし、PL/SQLでやってしまおう。」
そんな時は順位等を付ける場合に使用する ROW_NUMBER を使用します。
そして PARTITION BY で区切ります。
使用例としては以下のよになります。
ROW_NUMBER() OVER (PARTITION BY ▲▲ ORDER BY ●●)
※ ▲▲・●●は項目
上記では、●●で並び替え1から順に連番を振、
▲▲が変わったタイミングでまた1から連番を振ります。
これで、どの明細が区分の何番目の明細かが判別できます。
ということはこれが1の場合は先頭ということになります。
あとは判別式で判別してやればよいわけですが・・・しかーし、
8i以降で一応使用は可能とのことですが、
バージョンによってはSQLは発行出来てもPL/SQLではコンパイルが通らず
使用できない場合がありますのでご注意を・・・。
(結局そのときの8iでの対応は、サブクエリで並び替えを行い、
グローバル変数を使用した”変数の値が変わったら”というFUNCTIONで代用を作成し判別しました。)