昨日の日付変換に関する提案をしてくれた人たちのおかげで、私は今、動作するSELECTスクリプトを持っています。
残念ながら、それをUPDATEスクリプトに変換しようとすると、恐ろしくなります。
Msg 4104, Level 16, State 1, Line 25
The multi-part identifier "mbrProject.ID" could not be bound.
スクリプト全体で、一致するID(mbrProject。[ID] = ProjectDates。[Project_ID])ごとにmbrProjectからProjectDatesに日付を挿入する必要があります。また、更新時にユーザーが国の設定を誤っているため、mbrProjectで米国と英国の混合形式の日付を解決する必要があります。テーブル(私の終わりから変更できません)。
Update ProjectDates
SET ProjectDates.[Start_Date] =
(
select right([Start_Date],4) +
case
when len([Start_Date])=10 then
substring([Start_Date],4,2) + left([Start_Date],2)
else right('0' + left([Start_Date],firstIndex-1),2) +
right('0' + substring([Start_Date],firstIndex+1,secondIndex - firstIndex-1),2)
end
from
(
select mp.[Start_Date], charindex('/',mp.[Start_Date],1) firstIndex,
charindex('/',mp.[Start_Date],charindex('/',mp.[Start_Date],1)+1) secondIndex
from mbrProject mp
join ProjectDates pd
on mp.ID = pd.Project_ID
)A
where mbrProject.[ID] = ProjectDates.Project_ID
)
SELECTステートメントのみを実行すると、正常に機能し、正しい値が返されます。すなわちからのすべて
select right([Start_Date],4) +
case
至るまで
from mbrProject mp
join ProjectDates pd
on mp.ID = pd.Project_ID
)A
ただし、UPDATEステートメントでラップしようとすると、エラーが発生します。
これは構文にかかっていることは知っていますが、どこに移動しようとしても、それを完全に理解することはできません。
何かアイデアはありますか?
ありがとうクレイグ