Verwenden Sie CTE, um Tabellendatensätze zu aktualisieren
In SQL können Sie Common Table Expressions (CTE) und UPDATE-Anweisungen verwenden, um Daten in einer Tabelle zu ändern. Ein CTE ist ein Alias oder eine temporäre Ergebnismenge, auf die in Abfragen verwiesen werden kann.
Um Datensätze in einer Tabelle mithilfe von CTE zu aktualisieren, können Sie eine Abfrage wie diese verwenden:
<code class="language-sql">WITH CTE_DocTotal AS ( SELECT SUM(Sale + VAT) AS DocTotal FROM PEDI_InvoiceDetail GROUP BY InvoiceNumber ) UPDATE PEDI_InvoiceDetail SET DocTotal = CTE_DocTotal.DocTotal;</code>
Diese Abfrage aktualisiert den Wert der DocTotal-Spalte in der PEDI_InvoiceDetail-Tabelle mit dem Wert der DocTotal-Spalte im CTE_DocTotal CTE.
In Ihrem Fall fehlt jedoch in der CTE-Definition eine Verknüpfung zwischen den Tabellen CTE und PEDI_InvoiceDetail. Um diese Verknüpfung herzustellen, fügen Sie dem CTE wie folgt eine Partitionierungsklausel hinzu:
<code class="language-sql">WITH T AS ( SELECT InvoiceNumber, DocTotal, SUM(Sale + VAT) OVER(PARTITION BY InvoiceNumber) AS NewDocTotal FROM PEDI_InvoiceDetail ) UPDATE T SET DocTotal = NewDocTotal;</code>
Diese geänderte Abfrage erstellt einen neuen CTE mit dem Namen T, der die InvoiceNumber-Spalte aus der PEDI_InvoiceDetail-Tabelle enthält. Dies ermöglicht die Partitionierung von CTEs nach InvoiceNumber und stellt sicher, dass der NewDocTotal-Wert für jede Rechnung korrekt berechnet wird.
Die UPDATE-Anweisung wendet dann den berechneten NewDocTotal-Wert auf die DocTotal-Spalte in der PEDI_InvoiceDetail-Tabelle an.
Das obige ist der detaillierte Inhalt vonWie kann ich Tabellendatensätze mithilfe eines CTE in SQL aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!