对查询结果

时间:2016-05-23 00:55:16

标签: sql database oracle plsql

我可以对查询结果进行算术运算吗?我的查询返回两行。

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_IDs从另一个表中得到的CLOSED_SWAP中减去DEAL_ID 5397396(上面的HFSING OFFSET 0)的交换。

这是获取CLOSED_SWAP

值的另一个表
TABLE CLOSE_POSITION_DETAIL_ID
{
   DEAL_ID,
   closed_swap,
   xxx etc
}

例如,上述交易的掉期价值为22657 - 我从另一个表中得到closed_swap。

这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用group by并计算不同数量的偏移量。 样本如下:

    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);

这是一个非常简化的样本,因为问题并不是很清楚。