Jump to content

ath

Members
  • Gesamte Inhalte

    2
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von ath

  1. 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      

     

     

     

  2. 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

×
×
  • Neu erstellen...