Msg 4104,Level 16,State 1,Procedure cst_priceimporter,Line 37

问题描述:

我已经写了下面的代码,并得到以下错误,我相信它与我如何加入国家表,但不能解决如何修理。任何人都可以点我在正确的方向,请更新Msg 4104,Level 16,State 1,Procedure cst_priceimporter,Line 37

Msg 4104, Level 16, State 1, Procedure cst_priceimporter, Line 37 
The multi-part identifier "country.price" could not be bound. 

 

create procedure cst_priceimporter as 



declare @todayDt datetime 
declare @dtfirst int 
declare @dtweek int 
declare @iswkday bit 


select @todayDt = convert(varchar,getdate(),101) 

set @dtfirst = @@datefirst - 1 
set @dtweek = datepart(weekday, @todayDt) -1 



if (@dtfirst + @dtweek) % 7 = 0 
    begin 


     set @todaydt = @todaydt- 2 

     update SecPriceHist 
     set  fxrate = 1/fxrate 
     from SecPriceHist sph 
     join sec s 
     on  sph.id = s.id 
     and  sph.priceSource = 'DFLT' 
     and  sph.hdate = @todayDt 
     and  sph.dateStamp between DATEADD(mi,-1,getdate()) and getdate() 
     and  s.sectype <2 and s.country not in ('SupraNational','ZMultiCountry') 
     and  sph.id <> 'SEK' 

     update country 
     set  country.price = 1/country.price 
     from country c 
     join sec s 
     on  s.country = c.country 
     and  s.dateStamp between DATEADD(mi,-1,getdate()) and getdate() 
     and  s.sectype <2 and s.country not in ('SupraNational','ZMultiCountry') 
     and  s.id <> 'SEK' 
     join secpricehist sph 
     on  sph.id = s.id 
     and  s.country = c.country 
     and  sph.priceSource = 'DFLT' 
     and  sph.hdate = @todayDt 
     and  sph.dateStamp between DATEADD(mi,-1,getdate()) and getdate() 
     and  s.sectype <2 and s.country not in ('SupraNational','ZMultiCountry') 
     and  sph.id <> 'SEK' 






    end 
else 
     set @todaydt = @todaydt- 1 

     update SecPriceHist 
     set  fxrate = 1/fxrate 
     from SecPriceHist sph 
     join sec s 
     on  sph.id = s.id 
     and  sph.priceSource = 'DFLT' 
     and  sph.hdate = @todayDt 
     and  sph.dateStamp between DATEADD(mi,-1,getdate()) and getdate() 
     and  s.sectype <2 and s.country not in ('SupraNational','ZMultiCountry') 
     and  sph.id <> 'SEK' 


     update country 
     set  country.price = 1/country.price 
     from country c 
     join sec s 
     on  s.country = c.country 
     and  s.dateStamp between DATEADD(mi,-1,getdate()) and getdate() 
     and  s.sectype <2 and s.country not in ('SupraNational','ZMultiCountry') 
     and  s.id <> 'SEK' 
     join secpricehist sph 
     on  sph.id = s.id 
     and  s.country = c.country 
     and  sph.priceSource = 'DFLT' 
     and  sph.hdate = @todayDt 
     and  sph.dateStamp between DATEADD(mi,-1,getdate()) and getdate() 
     and  s.sectype <2 and s.country not in ('SupraNational','ZMultiCountry') 
     and  sph.id <> 'SEK' 

的设置部位应该没有任何表名,你只能反正更新之一。 此外,由于你有别名国家为C,则需要使用别名

update country 
set  price = 1/c.price 

我认为它出现了两次