エラーは自己が混乱しない理由です。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を実際の番号に変更することができます。
UNIONの場合、選択した列のデータ型は一致する必要があります。 – jarlh
問題を再現する最小限の例を作成することに労力を費やしていなかったため、この質問を下落させました。投稿されたコードには、あなたの問題に関連しないものがたくさんあります。 – wvdz
エラーの原因を正確に把握できなかったので、どのように最小限に抑えることができますか? – Richard