2011-01-19 8 views
0

以下のコードを書いて、以下のエラーが表示されていますが、私はそれがどのように国のテーブルに参加していますが、修正する。誰もが正しい方向に私を指すことができ、更新のメッセージ4104、レベル16、状態1、プロシージャcst_priceimporter、行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' 

答えて

0

SET部分は、あなただけとにかく1を更新することができ、任意のテーブル名を持つべきではないしてください。 Cは、エイリアス

update country 
set  price = 1/c.price 

を使用する必要があるとして、あなたは国をエイリアスしているので、 はまた、私はそれが二回

を発生すると思います
関連する問題