我可以对查询结果进行算术运算吗?我的查询返回两行。
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。
这可能吗?
答案 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);
这是一个非常简化的样本,因为问题并不是很清楚。