我在玩AdvantureWorks
DB,但我沒有SalesOrderDetail
表上的實際銷售值。此行應該包含LineTotal
通過訂單ID彙總。SQL-group by into列更新
我需要輸入這些值轉化爲實際的銷售列每個訂單ID行:
select SUM(LineTotal) as ActualSales
from Sales.SalesOrderDetail
group by SalesOrderID
我在玩AdvantureWorks
DB,但我沒有SalesOrderDetail
表上的實際銷售值。此行應該包含LineTotal
通過訂單ID彙總。SQL-group by into列更新
我需要輸入這些值轉化爲實際的銷售列每個訂單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
craigmj, 這種說法提出ActualSales作爲別名,但不會更新ActualSales列中的值。 我錯過了什麼嗎? – uvluni