我有以下CTE,可以为我提供整个发票的DocTotal。

 ;WITH CTE_DocTotal
 AS
 (
   SELECT SUM(Sale + VAT) AS DocTotal
   FROM PEDI_InvoiceDetail
   GROUP BY InvoiceNumber
 )

UPDATE PEDI_InvoiceDetail
SET DocTotal = CTE_DocTotal.DocTotal

现在,使用此结果,我想将PEDI_InvoiceDetail中的DocTotal值输入到该列中。

我知道这是行不通的,而且我知道我缺少什么,这是什么?

最佳答案

您对CTE所做的更新将级联到源表中。

我不得不稍微猜测一下您的架构,但是这样的事情应该起作用。

;WITH T AS
(   SELECT  InvoiceNumber,
            DocTotal,
            SUM(Sale + VAT) OVER(PARTITION BY InvoiceNumber) AS NewDocTotal
    FROM    PEDI_InvoiceDetail
)
UPDATE  T
SET     DocTotal = NewDocTotal

10-08 03:58