我提取财务信息,但遇到了收费反转信息。基本上,如果有人收取服务费用,那么就会有一个列收费。如果电荷稍后被反转,则会有另一行具有完全相同的数据,但其上带有电荷反转标记。我想只收取根本未被撤销的指控。 以下是我的意思和需要的一个例子。正如您所看到的,如果电荷是反转,则RVSLInd列的值为1。 0表示初始充电
我无法做到:从表中选择*,其中rvslInd = 0.因为这样只能摆脱反转行。
RvslInd|ExtPriceAmt
-------| ----------|
0 | 155.70 |
0 | 1.50 |
0 | 239.00 |
0 | 1111.00 |
1 | -1111.00 |
0 | 217.00 |
0 | 1491.00 |
1 | -1491.00 |
0 | 388.00 |
0 | 72.00 |
这是我希望能够回来的:
RvslInd|ExtPriceAmt
-------| ----------|
0 | 155.70 |
0 | 1.50 |
0 | 239.00 |
0 | 217.00 |
0 | 388.00 |
0 | 72.00 |
这将是我添加了客户专栏的新表:
CustomerID|RvslInd|ExtPriceAmt
----------|-------| ----------|
1 | 0 | 155.70 |
1 | 0 | 1.50 |
1 | 0 | 239.00 |
2 | 0 | 217.00 |
2 | 0 | 388.00 |
2 | 0 | 72.00 |
答案 0 :(得分:1)
鉴于您的数据,您无法可靠地做您想做的事情。对于您显示的数据,您可以执行以下操作:
select ExtPriceAmt
from t
where RvslInd = 0 and
not exists (select 1 from t t2 where t2.ExtPriceAmt = - t.ExtPriceAmt and t2.RvslInd = 1);
问题在于重复价格。这妨碍了。
尽管如此,一切都不是没有希望的。您可以获得价格清单以及非逆转时间的数量:
select ExtPriceAmt,
sum(case when RvslInd = 0 then 1 when RvslInd = 1 then -1 end) as non_reversed_count
from t
group by ExtPriceAmt
having sum(case when RvslInd = 0 then 1 when RvslInd = 1 then -1 end) > 0;