2011-07-29 10 views
1

oracle/sql問合せに関する質問を1つ作成します。いくつかの計算のOracle/Sqlクエリ!

私はそれらの結果を得るために、カーソルを使用しています

Column1 
    5  (25-20) 
    5  (20-15) 
    3  (15-12) 
    1  (12-11) 
    1  (11-10) 

、私はこのような結果を取得したい

Column1 
    25 
    20 
    15 
    12 
    11 
    10 

、以下のようないくつかのデータを持っています。しかし、私は本当にカーソルを使用したくありません。なぜなら、計算する行が非常に多いからです。 "Case Up、Roll Up"のような結果をOracle/Sqlで得る関数はありますか?

+1

OracleまたはSQL Serverの?一つを選ぶ。 –

+0

あなたの答えをありがとう、OracleまたはSQlは私のために大丈夫です。 – Chong

+0

「SQL」と「SQL Server」という用語を混同しないようにしてください。前者は言語の名前であり、後者はサーバ製品の名前であり、その名前の一部(単にMySQLやPostgreSQLのように)が「SQL」となってしまいます。 –

答えて

9

これらの関数は、ラグ()と鉛(いる)、ここを参照してください - http://www.orafaq.com/node/55

を彼らはこのように使用することができます -

select 
    value - prev_value as diff, 
    '(' || to_char(value) || ' - ' || to_char(prev_value) || ')' as expression 
from ( 
select value, idx, 
    lag(value) over (order by idx) as next_value, 
    lead(value) over (order by idx) as prev_value 
from(
      select 25 as value, 1 as idx from dual 
union all select 20 as value, 2 as idx from dual 
union all select 15 as value, 3 as idx from dual 
union all select 12 as value, 4 as idx from dual 
union all select 11 as value, 5 as idx from dual 
union all select 10 as value, 6 as idx from dual 
) 
) where prev_value is not null 
関連する問題