2016-03-30 18 views
-1

MS SQL Server kullanıyorum. Şu anda, çalışan sayısı çekmek için bir sorgu üzerinde çalışıyorum. Bu işlemde, geçici tablolar oluşturuyorum, ancak yalnızca bir kez sorguyu çalıştırabildiğimi fark ettim. Değişiklikler yaptıktan sonra tekrar çalıştırmayı denerseniz, bana 'Veritabanında' # Test1 'adlı bir nesne zaten var.Sıcaklık Tablosu'nu Birden Çok Kez Çalıştırmak İçin

My SQL şuna benzer:

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 

son Select ifadesi olmayan geçici tablo sorgunun başlangıcıdır. Bir satırda birden çok kez çalışabilmek için kodda ne yapabilirim/yazabilirim? Ayrıca, aldığım hata:

Msg 2714, Düzey 16, Durum 6, Satır 4 Veritabanında '# Test1' adlı bir nesne zaten var.

Teşekkürler!

+0

Peki ... İlk kontrolünüz # Test1'i bırakıyor ancak sadece #Headcount varsa. belki bu sorun nedir? Aynı şeyi tekrar # Final1 için yapıyorsun. –

+0

Ve sadece bir öneri ... gerçekten sıra sıraları yerine sütun isimleriyle sipariş vermelisiniz. Sorgunuzu değiştirirseniz, siparişin yanlış olması nedeniyle yanlış veriler alabilirsiniz. –

+0

Öneriyi takdir edin! Evet, sorunun bir parçasıydı. –

cevap

0

Yazarken ... INTO # test1, tabloyu select deyiminin içeriğine göre oluşturuyorsunuz. 1) sorgularınızın sonunda geçici tabloları bırakmanız gerekir, 2) ön uçta var olup olmadığını kontrol edin ve varsa bırakın, 3) her ikisi de.

Zaten #headcount için kontrol ediyorsunuz, ancak başında #final ve # test1 bırakıyorsunuz. #headcount'u bir tablo olarak ilan ettiğinizi görmüyorum?

+0

Temelde konu buydu. Hala SQL'e yeni. Yardım için teşekkürler! –

İlgili konular