WITH FirstQuery AS (
select i.id, o.[name] from Item i
LEFT OUTER JOIN sys.objects o on o.[name]='I' + cast(i.id as nvarchar(20))
where o.name is not null
)
select PriceListItem.ProductExternalId,
FQ.Id, [PriceListItem].[ProductExternalDesc]
from FirstQuery FQ
inner join [Product] on Product.ItemId = FQ.name
and Product.InstanceId = FQ.ID
inner join [PriceListItem] on Product.ID = PriceListItem.ProductId;
它有一个错误:
将nvarchar值'I451'转换为数据时转换失败 输入int。
答案 0 :(得分:2)
所以......看起来你正试图加入Product.ItemID (int) = FQ.name (varchar)
。
为什么你认为这会起作用?
示例数据可以帮助人们弄清楚您要做什么以及如何完成它。
答案 1 :(得分:0)
如果您仍然希望加入这两列并希望它在无效的int时不匹配,那么可以反过来这样做。将Product.ItemID转换为varchar:
inner join [Product] on cast(Product.ItemID as varchar) = FQ.name