首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL电荷反转数据

SQL电荷反转数据
EN

Stack Overflow用户
提问于 2017-09-14 20:44:12
回答 1查看 73关注 0票数 0

我在提取财务信息,但却遇到了反收费信息。基本上,如果有人因为一项服务而被收费,那么就会有一个带有这项费用的专栏。如果电荷后来反转,则会有另一行具有完全相同的数据,但上面有电荷反转标志。我只想得到没有被撤销的指控。下面是我的意思和需要的例子。如您所见,如果电荷是反转的,RVSLInd列有1。0表示初始电荷。

我做不到:从rvslInd = 0的表中选择*。因为这只会去掉倒转行。

代码语言:javascript
复制
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    |

这就是我想要得到的:

代码语言:javascript
复制
RvslInd|ExtPriceAmt 
-------| ----------|
   0   |  155.70   |
   0   |  1.50     |
   0   |  239.00   |
   0   |  217.00   |
   0   |  388.00   |
   0   |  72.00    |

这将是我的新表,并添加了一个customer列:

代码语言:javascript
复制
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    |
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-14 20:46:35

根据您的数据,您无法可靠地做您想做的事情。对于您显示的数据,您可以:

代码语言:javascript
复制
select ExtPriceAmt
from t
where RvslInd = 0 and
       not exists (select 1 from t t2 where t2.ExtPriceAmt = - t.ExtPriceAmt and t2.RvslInd = 1);

问题是当价格被重复的时候。那就挡道了。

话虽如此,并非一切都是无望的。您可以获得价格列表以及不可反转次数:

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46227937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档