2017-01-26 37 views
0

我有這個存儲過程,但我在WHERE子句中的日期有問題。我一直收到「無效的列名稱」或「多部分標識符無法綁定錯誤消息」。無效列名或連接中的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)) 

回答

1

這應該起作用。

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)) 

如果您選擇使用別名,則必須使用對錶的所有引用的別名。

+0

太好了,謝謝! :)我只需要改變最後一行使用別名,現在它的工作。 :)「和(Convert(date,ass。[Date],103)= Convert(date,@OldestDateToUpdate,103))」 –

0
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)) 
相關問題