DB で遊んでいますが、テーブルAdvantureWorks
に実際の売上値がありません。SalesOrderDetail
この行にはLineTotal
、注文 ID による集計が含まれているはずです。
これらの値を注文 ID 行ごとに [Actual Sales] 列に入力する必要があります。
select SUM(LineTotal) as ActualSales
from Sales.SalesOrderDetail
group by SalesOrderID
DB で遊んでいますが、テーブルAdvantureWorks
に実際の売上値がありません。SalesOrderDetail
この行にはLineTotal
、注文 ID による集計が含まれているはずです。
これらの値を注文 ID 行ごとに [Actual Sales] 列に入力する必要があります。
select SUM(LineTotal) as ActualSales
from Sales.SalesOrderDetail
group by SalesOrderID
UPDATE x
SET x.ActualSales = x.NewActualSales
FROM (
SELECT ActualSales, SUM(LineTotal) OVER (PARTITION BY SalesOrderID) AS NewActualSales
FROM Sales.SalesOrderDetail
) x
グループ化するフィールドをクエリに追加する必要があります。
select SalesOrderID, sum(LineTotal) as ActualSales
from SalesOrderDetail
group by SalesOrderID
UPDATE
次のJOIN
ようにできます:
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;