SQL Schleife durch die Datensätze in einer Tabelle
Ich habe eine Tabelle als master, den primary key ist account_num. Jede Kontonummer hat eine account_type (einzelnes Zeichen). Ich muss Folgendes tun:
- finden Sie alle Konten mit einem Typ A oder B.
- store, die Konto-Nummer in eine neue Tabelle namens year_end_close zusammen mit einem Zeitstempel, Wann die Transaktion erfolgt
- eingestellt, alle Konten Meister mit einem Typ von A zu C, und alle Konten mit einem Typ von B zu D
Was ist der beste Weg, dies zu behandeln, die in SQL? While-Schleife? Case-Anweisung? Cursor? Jede Hilfe ist willkommen. Der Tisch hat etwa 17.000 Zeilen.
Sie können es mit 2 Abfragen. Eine insert-und eine update.
Naja, 3 Abfragen, wenn Sie noch nicht in der Tabelle erstellt noch.
Meine Vertrautheit mit SQL-scripting ist sehr begrenzt - ich weiß, wie ich es tun würde, in anderen Sprachen, aber meine Unsicherheit liegt darin, wie um sicherzustellen, dass ich bin auf der Suche an jedem Datensatz in der Tabelle und ausführen der Aktion für die einzelnen Datensätze - wenn das Sinn macht.
Was ist deine Datenbank? SQL-Server? Oracle? MySQL?
Datenbank ist SQL-server
Naja, 3 Abfragen, wenn Sie noch nicht in der Tabelle erstellt noch.
Meine Vertrautheit mit SQL-scripting ist sehr begrenzt - ich weiß, wie ich es tun würde, in anderen Sprachen, aber meine Unsicherheit liegt darin, wie um sicherzustellen, dass ich bin auf der Suche an jedem Datensatz in der Tabelle und ausführen der Aktion für die einzelnen Datensätze - wenn das Sinn macht.
Was ist deine Datenbank? SQL-Server? Oracle? MySQL?
Datenbank ist SQL-server
InformationsquelleAutor Jana | 2013-04-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nicht brauchen, um verwenden Sie einen cursor/Schleife, so etwas zu tun. Beim schreiben von SQL, immer versuchen Sie, einen set-basierten Lösung zuerst. Ich würde empfehlen, eine
CASE
Aussage, das war eine der Optionen, die Sie erwähnt.Versuchen Sie dies:
current_timestamp
anstelle von proprietärengetdate()
, und die gleiche where-Klausel, um sowohl die select-und die update.du hast Recht, gute Punkte. Normalerweise verwende ich
current_timestamp
mich; ich dachte nurgetdate()
wäre einfacher zu Folgen, für jemanden nicht verwendet, um SQL-und ich wusste nichtcurrent_timestamp
wurde der ANSI-standard. Ich werde mein edit beantworten.Gute Beratung am set-basierte Logik. WÄHLEN Sie... IN... ist die proprietäre syntax als gut. Wenn Sie wollen, werden strengen ANSI, verwenden Sie eine separate TABELLE ERSTELLEN und EINFÜGEN... WÄHLEN Sie... Auch, möchten Sie vielleicht, um filter für die Zeilen, die es in year_end_close. Je nach Aktivität und isolation-level, könnte man update-Zeilen, die eingefügt oder aktualisiert wurden nach dem einfügen zu year_end_close.
Vielen Dank - das scheint genau das zu tun, was ich brauche!
InformationsquelleAutor Jeff Rosenberg
Sind Sie auf der Suche nach so etwas? (Ersetzen Sie die 'PRINT' - Anweisungen für den eigentlichen SQL-Anweisungen)
InformationsquelleAutor The Pig's Ear