2014-11-21 72 views
1

我正在運行一個非常簡單的SQL,並接收到一個非常奇怪的錯誤,我似乎無法解釋。SQL Server - 轉換失敗

我收到以下錯誤:

Conversion failed when converting the nvarchar value '20.02.01' to data type int. 

Obviosuly我要尋找的東西在我的查詢試圖一個nvarchar值轉換爲int,但你可以看到下面什麼都不這樣做!

我不知道爲什麼會發生這種情況。

請幫忙!

SELECT R.ReservationsID, 
     R.CollectionCompanyName, 
     R.CollectionCompanyAddress1, 
     R.CollectionCompanyAddress2, 
     R.CollectionCompanyTown, 
     R.CollectionCompanyPostCode, 
     R.DeliveryCompanyName, 
     R.DeliveryCompanyAddress1, 
     R.DeliveryCompanyAddress2, 
     R.DeliveryCompanyTown, 
     R.DeliveryCompanyPostCode, 
     R.[DeliveryCompanyTel No], 
     hw.WasteName, 
     hw.WasteTicket, 
     hw.SizeName, 
     hw.Comments, 
     hw.QTY, 
     hw.OriginalOrderQty, 
     hw.gross, 
     hw.tare, 
     hw.Net, 
     C.PremisesCode, 
     pec.EwcCode, 
     pec.[Description] 'EWC Desc', 
     RI.SICCode, 
     lwt.WCode 'EWC', 
     R.ActualDeliveryTime, 
     R.ActualDeliveryDate 



FROM 
tblReservation R 
LEFT JOIN dbo.tblHazLinesWaste hw ON hw.resid = r.ReservationsID 
LEFT JOIN dbo.PdaEwcCode pec ON pec.HazCodeID = hw.EWCCodeID 
LEFT JOIN tblCustomer C ON C.CustomerID = R.CustomerID 
LEFT JOIN dbo.tblReservationItems RI ON RI.reservationsID = R.ReservationsID 
LEFT JOIN dbo.lookupWasteTypes lwt ON lwt.WCode = RI.EWCCodeID 

WHERE 
hw.Deleted != 1 
+5

檢查你的表定義,所有的ID都具有相同的數據類型?實際上預留ID是字符串,而hw.resid是bigint或uid? – 2014-11-21 16:06:48

+0

Omg把這個答案作爲答案,我會接受,我知道什麼是錯的。 – 2014-11-21 16:07:27

+0

很高興有幫助。 – 2014-11-21 16:13:07

回答

2

檢查你的表定義,所有的ID都有相同的數據類型嗎?實際上預留ID是字符串,而hw.resid是bigint或uid?

+0

是的 - 左加入dbo.lookupWasteTypes lwt ON lwt.WCode = RI.EWCCodeID是問題,謝謝我只是沒有發現它。將在10分鐘內讓我接受。 – 2014-11-21 16:08:43

-1

你有單引號字段名稱:pec.[Description] 'EWC Desc',lwt.WCode 'EWC',。那些應該是雙引號。單引號用於字符串文字。

除此之外,請在ON子句和WHERE子句的字段中檢查您的數據類型。

+0

句法單引號適合混疊列。 – 2014-11-21 16:10:19

+0

@ParanoidAndroid啊,你是對的。我想我只是在SQL Server,PostgreSQL和Oracle之間來回切換,所以我只是避免使用這種語法。 Oracle語法(因此PostgreSQL語法)不會讓你這樣做。 – 2014-11-22 19:37:27