fred666
Goto Top

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:

 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!! face-sad Wäre supper wenn mir jemand das mit den 59 Sekunden Zeigen könnte!! face-smile

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

Content-ID: 169810

Url: https://administrator.de/contentid/169810

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

Fred666
Fred666 15.07.2011 um 16:15:24 Uhr
Goto Top
Frage hat sich beantwortet .... ein DATAPART war die Lösung

Grüße Fred