如何否定记录

时间:2014-07-11 00:51:16

标签: sql oracle

我有一项任务,我应该弄清楚一个人在某个月购买了多少部分。每条记录都来自包含零件订单的发票。

表格的重要部分是:

Orders (PartNo, Quantity, Price, discount, EXP_Price, date)

数据如下所示:

P1  1 30.00 15.00 15.00 11-NOV-06
P2  1 30.00 6.00  24.00 19-NOV-06
P2 -2 30.00 0.00 -30.00 11-NOV-06
P2  2 30.00 0.00  30.00 20-NOV-06

我遇到的问题是最后两行。最后两个订单相互抵消,好像有人在最后一部分中错误地敲响了最后一部分而不得不取消它。

有人如何构建一个查询,说明最后两行互相否定的事实?

提前致谢

好的,我一直在尝试这个并围绕它进行迭代

select PartNo
from Practice
Where PARTNO = (

  select PARTNO , SUM(Quantity) 
  from Practice
  group by PARTNO);

这些问题只是说明11月份Joe Smith(与此发票相对应的名称)购买了11月份(对不起嘴)。知道这个人,他会要求我们说明Joe从未真正购买过这些零件这一事实,因为他们从未向买家收取费用。

1 个答案:

答案 0 :(得分:1)

看起来非常简单,您只需要将所有列相加到数量符号。

select PartNo, sum(Quantity) as Quantity, sum(Price*sign(Quantity)) as Price, sum(discount*sign(Quantity)) as discount, sum(EXP_Price*sign(Quantity)) as EXP_Price
from Orders 
group by PartNo