计算2个表之间的值差异

时间:2014-06-01 15:28:36

标签: sql sql-server stored-procedures subquery

希望一些SQL专家可以提供建议并提供最有效的t-sql代码来检索以下结果。

我有2张桌子。

订单和期刊。

订单将包含OrderID,CustomerID,GrandTotal和付费列 期刊将有OrderID和Credit字段。

对于每个Orders行,Journal中可能有多个相关行。 我想检索OrderID和Outstanding(GrandTotal - Sum(Credit))的结果,其中CustomerID = @ CustomerID和Paid = false

例如。在订单表中 OrderID:1,CustomerID:1,GrandTotal:1000,paid = false
OrderID:2,CustomerID:1,GrandTotal:200,paid = false
OrderID:3,CustomerID:1,GrandTotal:500,paid = false
OrderID:4,CustomerID:2,GrandTotal:500,paid = true

在期刊表中 订单ID:1,信用:100
订单ID:1,信用:200
订单ID:2,信用:100
订单ID:4,信用:500

结果将是 订单ID:1,优秀:700(1000-Sum(100 + 200)
OrderID:2,GrandTotal:100(200-Sum(100))
OrderID:3,GrandTotal:100

1 个答案:

答案 0 :(得分:0)

Select orderid, (grandtotal-credits)
from orders
left join (select sum(credit) as credits from journal group by orderid) as credits on credits.orderid=jornal.orderid
where orders.paid=false and customerid=@Customerid

我确实离开了加入,以防你的所有客户都没有信用。