groupby句とorderby句を使用した複雑なクエリがあり、すべての行で返される並べ替えられた行番号(1 ... 2 ...(n-1)... n)が必要です。ROWNUM(クエリの述語フェーズを通過した後、クエリが並べ替えまたは集計を行う前に値が行に割り当てられる)を使用すると、並べ替えられていないリスト(4 ... 567 ... 123 ... 45)が得られます。 ...)。各行に番号を数えたり割り当てたりするためのアプリケーションを使用できません。
4344 次
6 に答える
11
ただできない理由はありますか
SELECT rownum, a.*
FROM (<<your complex query including GROUP BY and ORDER BY>>) a
于 2008-10-01T21:12:49.880 に答える
3
サブクエリとして実行できるので、次のようにします。
select q.*, rownum from (select... group by etc..) q
それはおそらくうまくいくでしょう...それよりも良いものがあるかどうかはわかりません。
于 2008-10-01T21:13:10.643 に答える
0
インラインクエリを使用できますか?すなわち
SELECT cols, ROWNUM
FROM (your query)
于 2008-10-01T21:13:11.890 に答える
0
クエリがすでに希望する方法で順序付けられており、順序のどの行であるかを示す番号が必要であると仮定します。
SELECT ROWNUM AS RowOrderNumber, Col1, Col2,Col3...
FROM (
[Your Original Query Here]
)
「Colx」をクエリの列の名前に置き換えます。
于 2008-10-01T21:14:57.267 に答える
0
私も時々次のようなことをします:
SELECT * FROM
(SELECT X,Y FROM MY_TABLE WHERE Z=16 ORDER BY MY_DATE DESC)
WHERE ROWNUM=1
于 2008-10-06T19:47:18.150 に答える
0
ROWNUM を使用して、クエリで返される行の総数を制限する以上のことをしたい場合 (例: AND ROWNUM < 10)、ROWNUM に別名を付ける必要があります。
select *
(select rownum rn, a.* from
(<sorted query>) a))
where rn between 500 and 1000
于 2010-07-27T14:25:59.817 に答える