我已经编写了以下代码并得到以下错误,我相信它与我如何加入国家/地区表有关,但无法解决如何解决问题。任何人都可以指出我正确的方向
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 :(得分:0)
更新的SET部分不应该有任何表名,你只能更新一个。 此外,由于您将别名Country作为C,因此您需要使用别名
update country
set price = 1 / c.price
我认为它发生了两次