希望一些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
答案 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
我确实离开了加入,以防你的所有客户都没有信用。