[英]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.