ath
-
Gesamte Inhalte
2 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von ath
-
-
Windows Server 2008R2
Hallo,
ich weis nicht, wie ich mein Problem exakt beschreiben soll. Meine Update-Queries finden seit ein paar Tagen kein Ende mehr, d.h. Updates, die bislang innerhalb von Sekunden fertig waren sind selbst nach Stunden nicht beendet. Ein Beispiel:
Meine Zieldatenbank enthält 45810 Sätze. Hier sollen ein paar Felder mit der Summe aus einer anderen Tabelle geändert werden. Das Update sieht so aus:
update [meineDB].[dbo].[Zieltabelle] set pluswert = (select (sum(s.amount) / Stunden) * (Plus * StundenJeTag) from [meineDB].[dbo].[Quelldatei] as s where [meineDB].[dbo].[Zieltabelle].[Person] = s.Person and s.leistungsart not in ('8016', '8017', '8018', '8021', '8022') group by s.person)
Wie gesagt: Die Abfrage lief bislang einwandfrei und war innerhalb von Sekunden beendet. Führe ich diese Abfrage als select aus und ersetze zum testen die Felder der Zieltabelle durch Konstanten ist der select in 2 Sekunden erledigt.
Lege ich eine neue Datenbank an und führe die Abfragen in dieser neuen Datenbank aus ergibt sich das gleiche Problem.
In welcher Richtung kann ich nach dem Fehler suchen?
Danke und Gruß
Andreas
TSQL Update Problem
in MS SQL Server Forum
Geschrieben
Hallo,
ich sehe wahrscheinlich den Wald vor lauter Bäumen nicht und brauche einen Schubs in die richtige Richtung.
Ich habe eine einfache Tabelle in der Form:
CREATE TABLE [dbo].[Test](
[PersNummer] [char](6) NULL,
[Stand] [datetime] NULL,
[Wert] [nchar](10) NULL
) ON [PRIMARY
In dieser Tabelle stehen bspw. folgende Sätze:
INSERT INTO [dbo].[Test] VALUES ('4711', '2019-09-01 00:00:00.000', '18');
INSERT INTO [dbo].[Test] VALUES ('4712', '2019-08-01 00:00:00.000', '51')
INSERT INTO [dbo].[Test] VALUES ('4711', '2021-10-01 00:00:00.000', '81')
INSERT INTO [dbo].[Test] VALUES ('4711', '2021-12-01 00:00:00.000', '151')
INSERT INTO [dbo].[Test] VALUES ('4712', '2020-06-01 00:00:00.000', '60')
Nun möchte ich die je Personalnummer das Feld Wert für den aktuellsten Stand updaten.
Die Selektion an sich würde so gelingen:
SELECT T.*
FROM Test as T
inner join
(select x.PersNummer, max(x.stand) as MaxDatum
from test as X
group by x.PersNummer) as y
on t.PersNummer = y.PersNummer and t.stand = y.MaxDatum
und als Ergebnis
PersNummer Stand Wert
4712 2020-06-01 00:00:00.000 60
4711 2021-12-01 00:00:00.000 151
In diesen Sätze soll der Wert von 60 bzw. 151 durch 100 ersetzt werden.
Irgendeine Idee?
Danke und Gruß
Andreas