2016-10-29 27 views
0

私は昨年、彼らの売上によって企業を取得するクエリを持っています。クエリ結果の行番号

select 
    Name, 
    Sale 
from Sales 
order by 
    Sale DESC 

と私は

Firm 2 | 200 000 
Firm 1 | 190 000 
Firm 3 | 100 000 

を取得し、私は、結果の行のインデックスを取得したいと思います。 Firm 2の場合Firm 31(または2)などの0(または1)を取得したいと考えていますか?または少なくとも何らかの種類の自動インクリメント列を作成します。必要であればストアドプロシージャでも使用できます。

答えて

3

Firebird 3.0はこれを実行するより良い方法であるrow_number()をサポートしています。

はしかし2.5 Firebirdのために、あなたは、相関副問合せであなたが望むものを手に入れることができます。

select s.Name, s.Sale, 
     (select count(*) from Sales s2 where s2.sale >= s.sale) as seqnum 
from Sales s 
order by s.Sale DESC; 
+0

私はFirebirdの2.5の上だけど、おかげでとにかく – Sk1X1

+1

Sk1X1 @。 。 。そのため、私は相関サブクエリを提案しています。 –

+0

私の間違い、申し訳ありません...最後に、素晴らしい解決策、ありがとう! :-) – Sk1X1

関連する問題