SQL Update Berechnung

05/12/2007 - 18:22 von yenny | Report spam
Hallo,

ich suche ein SQL Statement mit dem ich folgendes machen kann:
Ich habe eine Tabelle 'TEST'
Darin sind die Felder:
ID (Identitynummer) (Longwert)
KDNR (beliebige Kundennummern) (Longwert)
Farbfeld (Farbcode) (Longwert)
Gruppenfeld (Stringfeld)

In der der Tabelle sind 50000 Kunden gespeichert mit je 4 verschiedenen
Gruppen.
Also insgesamt 2 Mill. Datensàtze
Ich möchte nun mit einem SQL Update jeder 2. Kundennummer die gleiche Farbe
(Farbcode: 8888) eintragen.

In einer For-Schleife würde dies so aussehen:

for i = 2 to 50000 step 2
update test set Farbfeld = 888888 where ID in (i,i+50000,i+(2*50000), i+
(3*50000))
next

wie kann ich diese Schleifenabfrage in einem SQL Statement (kein Stored
Procedure) ausführen lassen?

Danke
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
05/12/2007 - 19:48 | Warnen spam
Hallo,

"yenny" schrieb

Ich möchte nun mit einem SQL Update jeder 2. Kundennummer die gleiche Farbe
(Farbcode: 8888) eintragen.



Jede zweite? Was heißt zweite? Gibt es Lücken in den Kundennummern?`

wie kann ich diese Schleifenabfrage in einem SQL Statement (kein Stored
Procedure) ausfà¼hren lassen?



Wenns keine Lücken gibt, bzw. es egal ist und bspw. jeder Datensatz mit einer
geraden Kundennummer aktualisiert werden soll, in etwa so:

UPDATE <Tabelle>
SET <Feld> = <Wert>
WHERE <IDSpalte> % 2 = 0

Wenn Du SQL Server 2005 verwendest, würde auch sowas hier gehen:

WITH Customers
AS
(
SELECT ROW_NUMBER() OVER (ORDER BY <Spalte> ASC) AS 'RowId',
<Spalte>,
<AndereSpalte>
FROM <Tabelle>
)
UPDATE Customers
SET <AndereSpalte> = <Wert>
WHERE RowId % 2 = 0

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen