2009-09-04 17 views
12

注文を使用しているSQL文の行番号をどのように表示できますか? 現在私はROWNUMを試しましたが、分かりにくい結果セットに対してのみ動作することを理解しています。Oracle: 'order by'句を使用して行番号を表示

SELECT rownum, a.lg_id, a.full_name, a.sort_order 
    FROM activity_type_lang a 
    where a.lg_id = 'en' 
    order by a.full_name; 

TIA

答えて

28

クエリを入れ子にすることに加えて、あなたはネクタイを処理する方法を変更したい場合は、分析関数分析関数を使用して

SELECT row_number() OVER (ORDER BY a.full_name), 
     lg_id, 
     full_name, 
     sort_order 
    FROM activity_type_lang a 
WHERE a.lg_id = 'en' 
ORDER BY a.full_name 

も、それが容易になります使用することができます。 ROW_NUMBERをRANKまたはDENSE_RANKに置き換えることができます。

7

ああ。私はすでに解決策を見つけたようだ。

Select rownum, lg_id, full_name, sort_order from 
(SELECT a.lg_id, a.full_name, a.sort_order 
     FROM activity_type_lang a 
     where a.lg_id = 'en' 
     order by a.full_name); 
3

ROWNUMのは、あなたがこのようにクエリを書き直す必要がありますので、ご注文前に適用されます。 をactivity_type_lang FROM 選択ROWNUM、XXX、( SELECT a.lg_idから* a.full_name、 a.sort_order。ここでa.lg_id = 'en' オーダーa.full_name )xxx;

2

こんにちは。私はどのように のSQLステートメントの行番号を印刷することができたのだろうか? を使用してください。現在私はROWNUM を試しましたが、それは 分けられていない結果セットに対してのみ動作することを理解しています。

(誰かが間違っている可能性があります)。それはですは(あなたが期待どおりに)動作しません。問題は、ROWNUM が「」のソートの前に「添付」され、レコードが取得されますが、ROWNUMレコードは連続していないことです。どうして?

select文で 基準はこれは本当に選択/オーダーメカニズムがどのように働くか良い例です 与えROWNUM = 1

ここで出会う最初のレコードので。

関連する問題