-1

这是我的问题:从 ProductVendor 表中选择所有行,从 Unit of Measure 表中只选择相应的数据。显示 Product Vendor 表中的 BusinessEntityID、ProductID、StandardPrice 列和 Unit of Measure 表中的 Name。写这两种不同的方式——一种使用连接,另一种使用 WHERE 子句。(10 分)

这是我的代码:

 USE AdventureWorks2008R2;
    SELECT  CAST(Name as INT),BusinessEntityID, ProductID, StandardPrice, Name
    FROM Purchasing.ProductVendor Right Outer JOIN Production.UnitMeasure
    ON Purchasing.ProductVendor.BusinessEntityID = Production.UnitMeasure.Name

而且我不断收到此错误:将 nvarchar 值“瓶”转换为数据类型 int 时转换失败。

4

1 回答 1

1

错误来自您的JOIN,就像BusinessEntityIDINT 一样,而NameNVARCHAR,当您JOIN在这两个字段上尝试将Name字段转换为INT时,由于它不包含INT值而失败。

您需要将ON条件更改为与两个表相关的适当字段(并使用表别名使其简单):

SELECT pv.BusinessEntityID, pv.ProductID, pv.StandardPrice, m.Name
FROM Purchasing.ProductVendor pv
JOIN Production.UnitMeasure m
   ON  pv.BusinessEntityID = m.ID --? 
于 2013-09-23T01:06:59.970 回答