仅从数据

时间:2016-05-02 06:34:42

标签: sql

我的数据包括成功和失败交易。我只需要净计数i.e. success-failure = net。 (仅使用sql)

id     product    txn_num   amount
1      sale       6737       40
2      failure    f6737     -40
3      sale       5635       70
4      sale       3467       80
5      failure    3467      -80
6      sale       3468       80
7      failure    3468      -80

我的数据不是结构化的。 考虑到txn_num使用sql的变化,我想计算净额。 如果产品出现故障,则需要将其与销售行一起删除,并且不需要将金额包含在结果中。 但问题是,数据失败事务编号不以'f'符号开头。 解决此问题的唯一方法是比较amounttxn_num列,以获得最终结果。

仅使用sql解决它。

结果应为

count=1, Amount=70, product=sale, id=4

1 个答案:

答案 0 :(得分:0)

取消交易时,新行的txn_numamount,但txn_num为负? 因此,您只需搜索包含单行或SUM(amount) <> 0

select min(id), min(product), txn_num, sum(amount) from tab group by txn_num having sum(amount) <> 0 -- or count(*) = 1 即可
MappedColumnName