2016-04-14 24 views
1

'a dönüştürülürken dönüştürme işlemi başarısız oldu. Hata kendi kendine kafa karıştırıcı değil, nedeni neden.SQL Hatası: Varchar değeri 'PJOI015' veri türü biti

Benim Kod

DECLARE @Pcode as varchar(20) 
DECLARE @PID as int 

set @Pcode = 'PJOI015' 

set @PID = (select productid from product where product.ProductCode = @Pcode and Deleted = 0) 

select 'ProductCode' as Data, ProductCode as Value,'' as Other From Product where productid = @PID 
Union All 
select 'Descripton' as Data, Description as Value,'' as Other From Product where productid = @PID 
Union All 
select 'Long Descripton' as Data, FullDescription as Value,'' as Other From Product where productid = @PID 
Union All 
select 'Alternative Keywords' as Data, AlternativeKeywords as Value,'' as Other From Product where productid = @PID 
Union All 
select 'Manufactures Code' as Data, ManufacturerCode as Value,'' as Other From Product where productid = @PID 
Union All 
select 'Main Barcode' as Data, BarCode as Value,'' as Other From Product where productid = @PID 
Union All 
select 'Barcodes' as Data, Barcode as Value, 
(case when BarcodeType = 0 then 'Default' 
when BarcodeType = 1 then 'Inner' 
when BarcodeType = 2 then 'Outer' 
when BarcodeType = 3 then 'Pallet' 
when BarcodeType = 4 then 'Other' 
end) as Other From ProductBarcode where productid = @PID 
Union all 

select 'Default Supplier' as Data, Supplier.Name as Value,Supplier.SupplierCode as Other 
From Product left join Supplier on Supplier.SupplierID = Product.SupplierID 
where productid = @PID 
Union all 
SELECT  'Other Suppliers' as Data,Supplier.Name as Value, 'StanBuy ' + Cast(StandardBuy as varchar(10)) as Other 
FROM   ProductSupplierPrice 
left join Supplier on Supplier.SupplierID = ProductSupplierPrice.SupplierID 
WHERE  ProductID = @PID 
GROUP BY ProductSupplierPrice.SupplierID, ProductID, StandardBuy,Supplier.Name 
Union all 
select 'Stocked?' as 'Data', ProductStockOption.Stocked as 'Value',branch.Name as 'Other' 
from ProductStockOption left join Branch on Branch.BranchID = ProductStockOption.BranchID 
where ProductID = @PID 

Hata

Msg 245, Level 16, State 1, Line 8 
Conversion failed when converting the varchar value 'PJOI015' to data type bit. 

Karışıklık

Union all 
select 'Stocked?' as 'Data', ProductStockOption.Stocked as 'Value',branch.Name as 'Other' 
from ProductStockOption left join Branch on Branch.BranchID = ProductStockOption.BranchID 
where ProductID = @PID 

Geçen birliği (Üstte) kaldırırsanız kod çalışıyor. Ve son birliği kendi başına çalıştırabilirim ancak @PID'yi gerçek sayıya değiştirebilirim.

+2

UNION olduğunda, seçilen sütunların veri türleri eşleşmelidir. – jarlh

+0

Sorunu yeniden üreten minimal bir örnek oluşturmaya çabalamadığınız için bu soruyu düşürdünüz. Yayınlanan kodda, sorununuzla alakalı olmayan pek çok şey var. – wvdz

+0

Tam olarak hataya neden sebep olduğunu bilmiyordum, nasıl en aza indirebilirim? – Richard

cevap

3

ProductStockOption.Stocked biraz alan? Bunu nvarchar'a dönüştürmeyi deneyin ve yardımcı olup olmadığını görün.

+0

Yep. Şimdi aptal hissediyorum, sadece yeni bir göze ihtiyacım vardı. – Richard

+0

Daha karmaşık bir hata arıyordum ve basit göz ardı ettim, Teşekkürler – Richard