我正在使用MS SQL Server。我目前正在研究拉人數的查詢。在這個過程中,我創建臨時表,但注意到我只能運行一次查詢。如果我在更改後再次嘗試運行它,它會給我'數據庫中已經有一個名爲'#Test1'的對象。'如何獲取臨時表以運行多個時間
我的SQL是這樣的:
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
最後Select語句是非臨時表查詢的開始。我可以在代碼中進行/寫入以便能夠連續運行多次?此外,我收到的錯誤:
Msg 2714,Level 16,State 6,Line 4 數據庫中已有一個名爲'#Test1'的對象。
謝謝!
嗯......你的第一次檢查是丟棄#Test1但只有#Headcount存在。也許這就是問題所在?你對#Final1再次做同樣的事情。 –
只是一個建議......你應該按專欄名稱而不是序號排列。如果更改查詢,則可能會得到不正確的數據,因爲順序是錯誤的。 –
感謝您的建議!是的,這是問題的一部分。 –