3 Stimmen

Aktualisierung auf der Grundlage einer Auswahl in derselben Tabelle - WIEDER, und WIEDER

In Microsoft SQL Server:

Ich habe diese Frage schon mehrmals gesehen, aber ich kann niemanden finden, der das Problem löst:

UPDATE theTable t1
SET t1.col2 =
    (SELECT (10 * (col1 + col2))
     FROM theTable t2
     WHERE t1.busRelAccount = t2.busRelAccount
     AND t2.rowName = 'POS'
    )
WHERE t1.busRelAccount = t2.busRelAccount
AND t1.rowName = 'INVENTORY'
;

Hat jemand dieses Problem gelöst, ohne CURSOR und Schleife der Tabelle zu verwenden?

6voto

marc_s Punkte 701497

Ich bin mir nicht 100%ig sicher, was Sie vorhaben - aber höchstwahrscheinlich könnten Sie Ihre UPDATE eine viel einfachere Erklärung - etwa so:

UPDATE t1
SET t1.col2 = 10 * (t2.col1 + t2.col2)
FROM theTable t1
INNER JOIN theTable t2 ON t1.busRelAccount = t2.busRelAccount
WHERE 
    t1.rowName = 'INVENTORY'
    AND t2.rowName = 'POS'
;

Im Grunde definieren Sie einen JOIN zwischen den beiden Tabellen (die beide eigentlich dieselbe Tabelle sind) und Sie definieren dann, wie die Spalte von t1 basierend auf Spalten aus t2

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X