簡體   English   中英

SQL-按分組進行列更新

[英]SQL - group by into column updating

我正在使用AdvantureWorks DB,但是SalesOrderDetail表上沒有“實際銷售”值。 該行應包含按訂單ID的LineTotal聚合。

我需要將這些值輸入到“實際銷售”列中的每個訂單ID行:

select SUM(LineTotal) as ActualSales
from Sales.SalesOrderDetail
group by SalesOrderID

您需要將要分組的字段添加到查詢中:

select SalesOrderID, sum(LineTotal) as ActualSales 
from SalesOrderDetail 
group by SalesOrderID

您可以使用JOIN進行UPDATE ,如下所示:

UPDATE od
SET od.ActualSalesColumn = g.ActualSales
FROM Sales.SalesOrderDetail od
INNER JOIN
(
    SELECT 
      SalesOrderDetail, 
      SUM(LineTotal) as ActualSales 
    FROM Sales.SalesOrderDetail 
    GROUP BY SalesOrderID
) g ON od.SalesOrderID = g.SalesOrderID;

或:使用CTE:

WITH ActualSales
AS
(
     SELECT 
       SalesOrderDetail, 
       SUM(LineTotal) as ActualSales 
     FROM Sales.SalesOrderDetail 
     GROUP BY SalesOrderID
)
UPDATE od
SET od.ActualSalesColumn = g.ActualSales
FROM Sales.SalesOrderDetail od
INNER JOIN ActualSales g ON od.SalesOrderID = g.SalesOrderID;
UPDATE x
SET x.ActualSales = x.NewActualSales
FROM (
      SELECT ActualSales, SUM(LineTotal) OVER (PARTITION BY SalesOrderID) AS NewActualSales
      FROM Sales.SalesOrderDetail
      ) x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM