SQL错误:将varchar值'PJOI015'转换为数据类型位时转换失败

时间:2016-04-14 12:38:45

标签: sql sql-server tsql union

错误它的自我并不混淆,但原因是。

我的代码

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

错误

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

困惑

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

如果我删除最后一个联合(上面),代码工作正常。 我可以自己运行最后一个联合,但将@PID更改为实际数字。

1 个答案:

答案 0 :(得分:3)

ProductStockOption.Stocked有点字段吗?尝试将其转换为nvarchar并查看是否有帮助。