Sql server 联接中where子句的列名无效或多部分标识符错误

Sql server 联接中where子句的列名无效或多部分标识符错误,sql-server,tsql,Sql Server,Tsql,我有这个存储过程,但WHERE子句中的日期有问题。我不断收到无效列名或无法绑定多部分标识符的错误消息 我尝试过各种组合,不包括表名,也不为表使用别名,有无方括号,但我仍然遇到同样的问题 update [SSRSAuditStockProvisionLIVE_backup] set [SSRSAuditStockProvisionLIVE_backup].SalesStatus = ss.Name from [SSRSAuditStockProvisionLIVE_backup] asp inn

我有这个存储过程,但WHERE子句中的日期有问题。我不断收到无效列名或无法绑定多部分标识符的错误消息

我尝试过各种组合,不包括表名,也不为表使用别名,有无方括号,但我仍然遇到同样的问题

update [SSRSAuditStockProvisionLIVE_backup] 
set [SSRSAuditStockProvisionLIVE_backup].SalesStatus = ss.Name
from [SSRSAuditStockProvisionLIVE_backup] asp
inner join AuditSalesStatus ass on ass.ArtworkId = asp.ArtworkId
inner join SalesStatus ss on ss.SalesStatusId = ass.NewConsignmentStatusId
where (Convert(date, [SSRSAuditStockProvisionLIVE_backup.Date], 103) = Convert(date, @OldestDateToUpdate, 103))
  and ass.ArtworkId = @ArtworkId 
  and (Convert(date, [AuditSalesStatus.Date], 103) = Convert(date, @OldestDateToUpdate, 103))
这应该行得通

update asp 
set asp.SalesStatus = ss.Name
from [SSRSAuditStockProvisionLIVE_backup] asp
inner join AuditSalesStatus ass on 
    ass.ArtworkId = asp.ArtworkId
inner join SalesStatus ss on 
    ss.SalesStatusId = ass.NewConsignmentStatusId
WHERE (Convert(date, asp.[Date], 103) = Convert(date, @OldestDateToUpdate, 103))
and ass.ArtworkId = @ArtworkId 
and (Convert(date, [AuditSalesStatus.Date], 103) = Convert(date, @OldestDateToUpdate, 103))

如果选择使用别名,则必须在表的所有引用中使用别名。

太好了,谢谢!:我只需要将最后一行更改为使用别名,现在它就可以工作了:和Convertdate,ass.[Date],103=Convertdate,@OldestDateToUpdate,103
update [SSRSAuditStockProvisionLIVE_backup] 
set SalesStatus = ss.Name
from [SSRSAuditStockProvisionLIVE_backup] asp
inner join AuditSalesStatus ass on ass.ArtworkId = asp.ArtworkId
inner join SalesStatus ss on ss.SalesStatusId = ass.NewConsignmentStatusId
WHERE (Convert(date, asp.Date, 103) = Convert(date, @OldestDateToUpdate, 103))
and ass.ArtworkId = @ArtworkId 
and (Convert(date, ass.Date, 103) = Convert(date, @OldestDateToUpdate, 103))