我有一项任务,我应该弄清楚一个人在某个月购买了多少部分。每条记录都来自包含零件订单的发票。
表格的重要部分是:
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从未真正购买过这些零件这一事实,因为他们从未向买家收取费用。
答案 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