132837

SQL Doppelte Werte mit Bedingung löschen und mail versenden

Hallo zusammen,

ich hoffe hier kann mir jemand weiterhelfen.
Ich habe die Corona Quarantäne mal genutzt um mich an ein lange geplantes Projekt zu begeben. Allerdings habe ich SQL das letzte mal vor fast 10 Jahren gemacht und bin jetzt auf ein Problem gestoßen, wo ich gerade nicht weiter komme.
Undzwar möchte ich folgendes realisieren:

  • aus einer Tabelle "Inventar" die doppelten/mehrfachen Werte ermitteln
  • alle Werte bis auf einen löschen, abhängig von einem Timestamp
  • Email Versand mit Daten der gelöschten Datensätze

Aus einer ganzen reihe von Datensätzen, sollen also die mehrfach vorhandenen Datensätze anhand der Seriennummer ermittelt werden. Beispielweise kommt dann das dabei raus:
sql_dup

Anschließend sollen alle mehrfach vorhandenen Datensätze gelöscht werden, bis auf den Datensatz mit dem aktuellsten Timestamp (LastScan).
Die Informationen, beispielsweise Hostname und Seriennummer des gelöschten Datensatzes sollen dann noch per Mail versand werden.

Ich hoffe ich konnte das verständlich erklären und jemand ist bereit dazu, mir da unter Arme zu greifen.
Hab mich jetzt schon ne Weile damit beschäftigt, aber finde irgendwie nicht das, was ich realisieren will (oder verstehe es nicht).

Nachtrag: Es handelt sich um eine MS SQL DB auf einem SQL Server 2014.

Gruß aus der Quarantäne

Tim
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 560475

Url: https://administrator.de/forum/sql-doppelte-werte-mit-bedingung-loeschen-und-mail-versenden-560475.html

Ausgedruckt am: 15.05.2025 um 01:05 Uhr

emeriks
Lösung emeriks 25.03.2020, aktualisiert am 26.03.2020 um 10:33:31 Uhr
Goto Top
Hi,
vielleicht solltest Du vor dem SQL mal Deine Such-Kenntnisse auffrischen? Auch Suchen will gelernt sein.

z.B.
Different ways to SQL delete duplicate rows from a SQL Table
How to send email from SQL Server?
Das sind nur Beispiele.
Da wirst Du irgendwas brauchbares finden.

E.
132837
132837 25.03.2020 aktualisiert um 15:40:04 Uhr
Goto Top
Hey,

vielen Dank für deine Tipps.
Mir haben die beiden hier sehr weiter geholfen:

delete-duplicates-sql-server
how-to-send-email-from-sql-server

Jetzt habe ich allerdings noch ein kleines Problem.
Undzwar möchte ich die Ausgabe einer Abfrage in irgendeiner Form in diese Email packen die verschickt wird.
Die Ausgabe enthält die beiden Spalten 'Hostname' und 'Seriennummer' aus meinem Beispiel oben.
Wie stelle ich das an? Ich kriegs noch irgendwie hin, den Hostname und die Seriennummer in zwei Variablen zu schreiben, aber es können halt auch mal mehr als 1 Datensatz sein, der verschickt werden muss.
Da stehe ich gerade irgendwie auf dem Schlauch.
132837
132837 26.03.2020 um 10:15:48 Uhr
Goto Top
Soo, ich habs endlich geschafft!
Vollständigkeitshalber hier noch zwei Funktionen, die mir weitergeholfen haben:

use-xp-cmdshell-extended-procedure
bcp-bulk-copy-program-command-in-action

Ich lasse jetzt mit bcp ein SELECT direkt in eine Textdatei schreiben.
Mit xp_cmdshell kann man das direkt aus SQL heraus erledigen.