2016-04-14 13 views
1

エラーは自己が混乱しない理由です。SQLエラー:varcharの値 'PJOI015'をデータ型のビットに変換するときに変換に失敗しました

マイコード

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を実際の番号に変更することができます。

+2

UNIONの場合、選択した列のデータ型は一致する必要があります。 – jarlh

+0

問題を再現する最小限の例を作成することに労力を費やしていなかったため、この質問を下落させました。投稿されたコードには、あなたの問題に関連しないものがたくさんあります。 – wvdz

+0

エラーの原因を正確に把握できなかったので、どのように最小限に抑えることができますか? – Richard

答えて

3

ProductStockOption.Stockedビットフィールドですか?それをnvarcharに変換し、それが役立つかどうか確認してください。

+0

今私は愚かな感謝の気持ちがただ新鮮な目のペアを必要と感じる。 – Richard

+0

私はもっと複雑なエラーを探していて、シンプルなものを見落としました、ありがとう – Richard