2013-09-23 49 views
-1

这是我的问题:从ProductVendor表中选择所有行,并从度量单位表中选择相应的数据。显示产品供应商表中的列BusinessEntityID,ProductID,StandardPrice和度量单位表中的名称。写这2种不同的方式 - 1使用连接,另一种使用WHERE子句。 (10分)将nvarchar值'Bottle'转换为数据类型时,转换失败int

这是我的代码:

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时转换失败。

+1

你为什么铸造'Name'作为'Int' ? –

+0

'SELECT 42 AS Name,...' – zerkms

+0

那么,因为我必须从一种数据类型转换为另一种,所以我应该使用Convert(int,Name)? – necea0612

回答

1

错误是从你JOIN的到来,作为BusinessEntityID是INT,而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 --? 
+0

对于“特定问题”,如何不提供模式描述以便猜测匹配列? :-) – zerkms

相关问题