Cursor auf SQL-Tabelle
Es wird SQL2005 verwendet...
Hey ... diese Frage ist mit sicherheit Trivial jedoch komm ich auf keinen Grünen zweig.
Ich habe eine Tabelle mit Werkstücken mit den Spalten: Werkstueck_ID, Anzahl, Bearbeitung_ID, Startzeit, Endzeit
So nun ist es so, dass ich die Daten alle bis auf Endzeit bekomme über ein Batch-File einspiele, dh. ich muss die Endzeit nachträglich eintragen. Bei vielen Daten macht das auch dementsprechend viel Arbeit alle von Hand nachzutragen. Und zwar will ich in die Endzeit eintragen:
Schön wäre es noch, wenn ich aus der berechneten Endzeit die Sekunden auffülle bis 59. Also bei einer Endzeit von 11:02:13 soll 11:02:59 eingefügt werden.
So nun möchte ich eine Schleife erstellen mit einem Cursor die mir für alle Daten in der Tabelle Werkstuecke nun diesen Befehl ausführt.
Kann mir da jemand einen Lösungsansatz bieten?!?
Danke und Grüße
Fred
EDIT_NEU: SO ich hab das mit dem Curser hinbekommen allerdings nur das!! Wäre supper wenn mir jemand das mit den 59 Sekunden Zeigen könnte!!
Hey ... diese Frage ist mit sicherheit Trivial jedoch komm ich auf keinen Grünen zweig.
Ich habe eine Tabelle mit Werkstücken mit den Spalten: Werkstueck_ID, Anzahl, Bearbeitung_ID, Startzeit, Endzeit
So nun ist es so, dass ich die Daten alle bis auf Endzeit bekomme über ein Batch-File einspiele, dh. ich muss die Endzeit nachträglich eintragen. Bei vielen Daten macht das auch dementsprechend viel Arbeit alle von Hand nachzutragen. Und zwar will ich in die Endzeit eintragen:
Endzeit = DATEADD(ss,Bearbeitung.Bearbeit_ID*Anzahl, Startzeit)
Schön wäre es noch, wenn ich aus der berechneten Endzeit die Sekunden auffülle bis 59. Also bei einer Endzeit von 11:02:13 soll 11:02:59 eingefügt werden.
So nun möchte ich eine Schleife erstellen mit einem Cursor die mir für alle Daten in der Tabelle Werkstuecke nun diesen Befehl ausführt.
Kann mir da jemand einen Lösungsansatz bieten?!?
Danke und Grüße
Fred
EDIT_NEU: SO ich hab das mit dem Curser hinbekommen allerdings nur das!! Wäre supper wenn mir jemand das mit den 59 Sekunden Zeigen könnte!!
DECLARE MyCursor CURSOR FOR
SELECT werkstueck_id, Anzahl, StartZeit, EndZeit, t.Bearbeitdauer
FROM dbo.Werkstueck INNER JOIN dbo.Bearbeitung AS t
ON dbo.Werkstueck.Type_ID = t.Type_ID;
OPEN MyCursor
declare @ID bigint
declare @anzahl int;
declare @dauer int;
declare @startzeit datetime;
declare @zeit datetime;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH next from MyCursor INTO @ID, @anzahl,@startzeit,@dauer
SET @zeit = DATEADD(ss,@dauer*@anzahl, @startzeit)
UPDATE dbo.werkstueck
SET [EndZEIT] = @zeit
WHERE Werkstueck_ID = @ID
END
CLOSE MyCursor;
DEALLOCATE MyCursor;
GO
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 169810
Url: https://administrator.de/contentid/169810
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
1 Kommentar