2013-09-23 79 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

相關問題