2013-07-23 67 views
-1

我试过这段代码:MERGE语句收益率绑定错误

Merge fact_table as target 
using(select top 1 idDateDeb,PK_Date, Week_Of_Year from dbo.dim_date_Debut) 
as source 
on cast(source.PK_Date as date)=cast(dbo.FACT_TABLE.DATE_DEBUT_ALRM as date) 
when matched then update set target.ID_TEMP_DEB=source.idDateDeb; 

但我得到这个错误:

Msg 4104, Level 16, State 1, Line 4
The multi-part identifier "dbo.FACT_TABLE.DATE_DEBUT_ALRM" could not be bound.

我试图做类似this question

+1

我建议不要链接到另一个问题,而是描述你在这里要做的事情(尤其是如果它与另一个问题有*不同),否则这应该作为一个副本关闭。 –

回答

1

尝试:

Merge dbo.fact_table as target 
using(select top 1 idDateDeb,PK_Date, Week_Of_Year from dbo.dim_date_Debut) 
as source 
on cast(source.PK_Date as date)=cast(target.DATE_DEBUT_ALRM as date) 
when matched then update set target.ID_TEMP_DEB=source.idDateDeb; 

你别名(dbo.fact_table作为target,所以解析器会期待看到target,不dbo.FACT_TABLE

+0

我做了这段代码,但我没有在Fact_Table上设置IdDateDeb:s:受影响的行s我认为当数据插入fact_Table时,我必须做triiger getId并将其放在id_tem_deb上,但我不知道如何去做 – user2586714

+0

我试过这段代码,但O行影响到了什么问题?使用 合并fact_table作为靶然后匹配 更新集时(选择顶部1 idDatefin,PK_Date_fin, WEEK_OF_YEAR 从dbo.dim_date_fin)作为对铸造源 (source.PK_Date_fin如日期)=流延(如target.DATE_fin_ALaRM日期) target.ID_TEMP_DEB = source.idDatefin, target.NUMEROSEMAINE = source.Week_Of_Year; heeeeelp请;( – user2586714