2016-05-23 10 views
-1

クエリ結果に対して算術演算を行うことはできますか?私のクエリは2行を返します。クエリ結果の算術演算を行う

POSITION_ID DEAL_ID OFFSET CURRENT SWAP SWAP 
20756839  5397396  0  22657   27880 
20756839  6154345  1  22657   0 

同じ位置で2つの異なる取引が行われました。 1つはオフセット1で、もう1つは0です。 今、実装したいのは: オフセットが0かどうかをチェックする必要があります。最初にその行を出力に出力し、2番目にこの行のDEAL_IDを別のものに結合しないでください同じ外部キーを持ち、そのテーブルからCLOSED-SWAPを取得します。最後にDEAL_IDに参加して別のテーブルから取得したCLOSED_SWAPからDEAL_ID 5397396(上のオフセット値0)のスワップを減算します。

これは例えばCLOSED_SWAP

TABLE CLOSE_POSITION_DETAIL_ID 
{ 
    DEAL_ID, 
    closed_swap, 
    xxx etc 
} 

の値を取得するための他のテーブルであり、上記取引のスワップ値が22657である - 私は別のテーブルから取得closed_swap。

これは可能ですか?

+3

結果はどのようにしたいですか?あなたの質問を編集してください。 –

+0

?期待される出力と「他のテーブル」などを表示してください。 – OldProgrammer

答えて

1

グループごとに異なるオフセット数を使用することができます。 サンプルは以下の通りです:

select sum(decode(at.did, 11 , -at.swap, at.swap)) Diff from 
    (
    select pid , count(distinct offset) from result 
    where did in (12, 11) 
    group by pid 
    having count(distinct offset) = 2) Gr 
    join anotherTable At 
    on AT.did in (11, 12) 

は次のようにあなたの構造を仮定:

create table result 
(PID number, 
DID number, 
OFFSET number); 

create table anotherTable 
(did number, 
    swap number); 

insert into anotherTable values 
(12, 10); 

    insert into anotherTable values 
(11, 5); 

insert into result values(
1, 11, 0); 

    insert into result values(
1, 12, 1); 

質問が本当に明確ではないように、それは非常にサンプルを単純化しています。

+0

編集した質問をご覧ください。 – Sam

+0

@ user1596226あなたの編集後はそれほど明確ではありません。たぶん期待される結果を書くかもしれない。 – dcieslak

+0

答えをありがとう。しかし、結果から1000のレコードを取得し、位置idがペアであるかどうかをチェックする必要があるときにクエリを動作させる方法 - オフセット0ともう1つ、合計を計算する? – Sam

関連する問題