消息4104,级别16,状态1,过程cst_priceimporter,第37行

时间:2011-01-19 11:30:30

标签: sql

我已经编写了以下代码并得到以下错误,我相信它与我如何加入国家/地区表有关,但无法解决如何解决问题。任何人都可以指出我正确的方向

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' 

1 个答案:

答案 0 :(得分:0)

更新的SET部分不应该有任何表名,你只能更新一个。 此外,由于您将别名Country作为C,因此您需要使用别名

update  country 
set     price = 1 / c.price

我认为它发生了两次