2017-05-06 57 views
0

我有一些麻煩,搞清楚如何將標量函數放在一起,其中3個產品爲1個訂單,只有2個產品的折扣應用於他們。正如你所看到的,我對此很新,但試圖去理解。謝謝你的幫助。標量函數總計價格結果與折扣

代碼:

select distinct(sum (od.UnitPrice * od.Quantity - od.Discount)), o.OrderID 
from Orders o 
join OrderDetails od 
on o.OrderID = od.OrderID 
where o.OrderID = 10250 
group by o.OrderID 

這可能是路要走關於標量函數應如何放在一起,但我得到一個總的,但它不是單獨申請折扣的項目。 再次感謝您的幫助!

回答

0

如果折扣是固定的貨幣金額,例如$ 5.00,你應該使用:

sum((od.unitprice-od.discount) * od.quantity) 

如果表現爲像.15一枝比例,你應該使用:

sum(od.unitprice * (1-od.discount) * od.quantity) 

注意你在這裏使用的是一個集合函數,而不是一個標量函數。

此外,您應該從查詢中刪除distinct。不同的重複整行。您無法將其應用於結果中的單個列,因此查詢distinct(sum(...))中的括號毫無意義。在這種情況下,不會有重複的行,因爲您是按orderID分組的,所以distinct不起作用。

如果您有特定的理由,您應該只使用distinct

0

試試這個,讓我知道如果你有任何疑問。

#如果申請數量的因素

select o.order_id,sum(od.unit_price*od.quantity-od.discount) as value 
from 
order o 
left join 
orderdetails od 
on o.order_id = od.order_id 
group by o.order_id; 

#打折後提到,如果提到的折扣是一個單一的項目

select o.order_id,sum((od.unit_price-od.discount)*od.quantity) as value 
    from 
    order o 
    left join 
    orderdetails od 
    on o.order_id = od.order_id 
    group by o.order_id; 

希望這有助於:)