2

こんな感じのテーブルがあります。

NAME    AGE
james   22
ames    12
messi   32
....
....

を使用してこのテーブルをクエリできますSelect name, age from emp;

今私が欲しいのは、クエリがn行を返す場合、名前の前に1,2,3..Nになる余分な列を持つことです。

SEQUENCE    NAME    AGE
1    james  22
2    ames   12
3    messi  32
4    ....
    ....

どうすればこれを行うことができますか?

4

2 に答える 2

2

ROWNUM表示時にシーケンス番号を含む列を追加するだけの場合(実際にそのデータをテーブルに保存するのではなく)、疑似列またはrow_number()分析関数を使用できます。

select row_number() over(order by name) seq
     , name
     , age
  from your_table

      SEQ NAME               AGE
---------- ----------- ----------
         1 ames                12
         2 james               22
         3 messi               32

上記のクエリの出力は並べ替えられてNAMEいますが、任意の列または列の組み合わせで並べ替えることができます。

2 番目のアプローチは、rownum疑似列を使用することです。結果の順序name

 select rownum seq
      , name
      , age
   from ( select name
               , age
           from your_table
          order by name
         )



       SEQ NAME               AGE
---------- ----------- ----------
         1 ames                12
         2 james               22
         3 messi               32
于 2012-10-27T12:24:30.383 に答える
1

あなたが試すことができます

Select ROWNUM sequence, name , age from emp;

クエリによって返される行ごとに、ROWNUM 疑似列は、Oracle がテーブルまたは結合された行のセットから行を選択する順序を示す数値を返します。選択された最初の行の ROWNUM は 1、2 番目の行は 2 というようになります。

于 2012-10-27T12:03:53.700 に答える