2015-06-06 31 views
0

我寫了這個查詢以獲得新的價值更新語句援助

select 
    ol.ordernumber, 
    sum(ol.Quantity * ol.each * ol.OriginalPrice) + s.ShippingCost as New Cost 
from 
    orderlines ol, orders o, ShippingMethods s 
where 
    ol.ordernumber = o.OrderNumber 
    and o.ShippingMethod = s.ShippingMethod 
    and CreateDate between '2015-05-01' and '2015-05-31' 
group by 
    ol.OrderNumber, s.ShippingCost 

我想用一個語句來更新像

update Orders 
set TotalRedoCostIncludingShipping = NewCost 

,我只是不知道如何將兩個查詢鏈接在一起,以通過訂單號更新訂單表。

+1

請標記與您正在使用的數據庫你的問題。並學習使用明確的'JOIN'語法。簡單的規則:永遠不要在'FROM'子句中使用逗號。 –

+0

Microsoft SQL 2008r2 – JeffreyLazo

+1

我鼓勵您在每次需要時都會導出數據,而不是存儲它。 – Bohemian

回答

0

東西沿着

with cte as 
(
    select o.OrderNumber, sum(ol.Quantity * ol.each * ol.OriginalPrice) + s.ShippingCost newcost 
    from orderlines ol join orders o 
     on ol.ordernumber = o.OrderNumber join ShippingMethods s 
     on o.ShippingMethod = s.ShippingMethod 
    where CreateDate between '2015-05-01' and '2015-05-31' 
    group by ol.OrderNumber, s.ShippingCost  
) 
update o 
    set o.TotalRedoCostIncludingShipping = c.newcost 
    from cte c join orders o 
    on c.OrderNumber = o.OrderNumber 
1

行試着這麼做:

update o 
set TotalRedoCostIncludingShipping = (
    select sum(ol.Quantity * ol.each * ol.OriginalPrice) + s.ShippingCost 
    from orderlines ol, ShippingMethods s 
    where ol.ordernumber = o.OrderNumber 
    and o.ShippingMethod = s.ShippingMethod 
    and CreateDate between '2015-05-01' and '2015-05-31' 
    Group by s.ShippingCost 
) 
from Orders o 

問候,達蒙