2016-05-19 14 views
0

So habe ich die folgende Anweisung zum Verschieben von Datensätzen von Staging-Tabelle (dbo.tblImportBCCDataStaging) in Produktionstabelle (dbo.tblImportBCCData) basierend auf der Zeit in der Staging-Tabelle (das ist 10 min) und wenn der Job in der Produktionstabelle nicht existiert. Bisher funktioniert die insert-Anweisung, aber wie kann ich die eingefügten Datensätze anschließend löschen?Löschen von Datensätzen nach Einfügen In Anweisung in Sql

INSERT INTO dbo.tblImportBCCData (JobNo, Zip, Country, Copies, AWB, DelvCode, OPSCode) 
SELECT  JobNo, Zip, Country, Copies, AWB, DelvCode, OPSCode 
FROM   dbo.tblImportBCCDataStaging AS t 
WHERE  (NOT EXISTS 
         (SELECT  JobNo 
         FROM   dbo.tblImportBCCData 
         WHERE  (JobNo = t.JobNo))) 
GROUP BY JobNo, Zip, Country, Copies, AWB, DelvCode, OPSCode, DateStamp 
HAVING  (DATEDIFF(mi, MIN(DateStamp), GETDATE()) > 10); 
+0

Können Sie nicht einfach aus dem Staging löschen, wo in der Produktion existiert? – CactusCake

Antwort

0

Dies könnte mit einer Temp-Tabelle gemacht werden, aber ich würde Folgendes verwenden. Basierend auf Ihrer Abfrage erscheint JobNo Ihr eindeutiger Bezeichner und hat wahrscheinlich einen Index. In diesem Fall:

Delete T 
From dbo.tblImportBCCDataStaging T 
Join dbo.tblImportBCCData P On P.JobNo = T.JobNo 
+0

Vielen Dank Jungs! – JenifferC

Verwandte Themen