Ich benutze MS SQL Server. Ich arbeite gerade an einer Abfrage für das Ziehen von Personal. In diesem Prozess erstelle ich temporäre Tabellen, habe aber festgestellt, dass ich die Abfrage nur einmal ausführen kann. Wenn ich versuche, es erneut auszuführen, nachdem ich Änderungen vorgenommen habe, gibt es mir die 'Es gibt bereits ein Objekt mit dem Namen' # Test1 'in der Datenbank.'Wie Temp-Tabelle mehrere Male ausgeführt wird
My SQL sieht wie folgt aus:
SET NOCOUNT ON SET ANSI_WARNINGS OFF
IF OBJECT_ID('Tempdb..#Headcount') IS NOT NULL
Drop Table #Test1
Select Coalesce(Enddate,GETDATE()) as EndDate1,FirstName,LastName,EmployeeID,CostCenter,JobCode, CompanyCode
Into #Test1
from EmployeeDM.dbo.vEmployeeJobReporting EJ
--Group By FirstName,LastName,EmployeeID,CostCenter
Order by 1
IF OBJECT_ID('Tempdb..#Headcount') IS NOT NULL
Drop Table #Final1
Select max(EndDate1) as Date1, FirstName,LastName,EmployeeID,CostCenter,JobCode, CompanyCode
Into #Final1
From #Test1
Group by FirstName,LastName,EmployeeID,CostCenter,JobCode, CompanyCode
Order by 1
SELECT F.CostCenter,F.FirstName,F.LastName, F.Date1, F.CompanyCode, F.JobCode,F.EmployeeID,(t3.Day_of_Month-t2.Day_of_Month+1)*1.0/t4.Day_of_Month as Headcount,
Case
Die letzte Anweisung Select ist der Beginn der nicht-temporäre Tabelle Abfrage. Was kann ich im Code tun/schreiben, um mehrere Male in Folge laufen zu können? Auch der Fehler, den ich erhalte:
Msg 2714, Ebene 16, Status 6, Zeile 4 Es gibt bereits ein Objekt namens "# Test1" in der Datenbank.
Danke!
Nun ... Ihre allererste Prüfung löscht # Test1 aber nur wenn #Headcount existiert. vielleicht ist das das Problem ?? Sie machen das gleiche wieder für # Final1. –
Und nur ein Vorschlag ... Sie sollten wirklich nach Spaltennamen statt Ordnungszahlen sortieren. Wenn Sie Ihre Abfrage ändern, erhalten Sie möglicherweise falsche Daten, weil die Reihenfolge falsch ist. –
Schätzen Sie den Vorschlag! Ja, das war Teil des Problems. –