2016-05-23 3 views
-1

Могу ли я сделать арифметику по результатам запроса? Мой запрос возвращает две строки.сделать арифметику по результату запроса

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

Две разные сделки были проведены для того же положения. Один имеет смещение 1 и другое 0. Теперь, что я хочу реализовать: Мне нужно проверить, является ли OFFSET равным 0, сначала я не должен печатать эту строку на выходе, а во-вторых, присоединить DEAL_ID этой строки к другому таблицу с таким же внешним ключом и получить CLOSED-SWAP из этой таблицы. Наконец, я вычитаю своп DEAL_ID 5397396 (HAVING OFFSET 0, выше) из CLOSED_SWAP, который я получаю из другой таблицы, присоединяя DEAL_ID.

Это другая таблица, чтобы получить значение 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 записей из результата и нужно проверить, являются ли идентификаторы позиции парами - одно смещение 0 и другое 1, а затем вычисляют сумму? – Sam