我写了下面的查询,以工会的开放项目的生产订单和库存转移。对于从OWOR表查询(后UNION ALL)
我得到一个错误
误差数据类型为nvarchar转换为数字
我试图转换十进制(最初6个字符到2)
Select t15.ObjType, t15.shipdate, t15.docentry, t15.linenum,
t15.linestatus, t15.itemcode, t15.Dscription, t15.Quantity, t15.OpenQty,
t15.price, t15.Currency, t15.rate, t15.DiscPrcnt, t15.LineTotal,
t15.OpenSum, t15.VendorNum, t15.WhsCode,
CASE
WHEN t15.objtype = 67 THEN 'Inventory Transfer Request'
ELSE 'unknown'
END AS Document_Type
From wtq1 t15
Union all
Select t16.ObjType, T16.DueDate, T16.Docentry, T16.ProdName,
T16.ItemCode, T16.Uom, CONVERT(DECIMAL(18,2), T16.PlannedQty),
CONVERT(DECIMAL(18,2), T16.CmpltQty), T16.Status, T16.PostDate,
T16.CloseDate, T16.CreateDate, T16.UpdateDate, T16.Warehouse,
T16.JrnlMemo, T16.Priority, T16.Printed,
CASE
WHEN t16.ObjType = 202 THEN 'Production Order'
ELSE 'Unknown'
END AS Document_Type
From owor T16
当使用UNION
那么所有相应的列必须具有相同的数据类型。
如果没有,那么也许会有一个隐式数据类型转换如果可能的话。
在你的情况下,通过只读取列的名字,我只能猜测,有列之间的不匹配的某些:
t15.ObjType t16.ObjType
t15.shipdate T16.DueDate
t15.docentry T16.Docentry
t15.linenum T16.ProdName
t15.linestatus T16.ItemCode
t15.itemcode T16.Uom
t15.Dscription CONVERT(DECIMAL(182) T16.PlannedQty)
t15.Quantity CONVERT(DECIMAL(182) T16.CmpltQty)
t15.OpenQty T16.Status
t15.price T16.PostDate
t15.Currency T16.CloseDate
t15.rate T16.CreateDate
t15.DiscPrcnt T16.UpdateDate
t15.LineTotal T16.Warehouse
t15.OpenSum T16.JrnlMemo
t15.VendorNum T16.Priority
t15.WhsCode T16.Printed
检查他们自己,但我认为,至少这些对:
t15.OpenQty T16.Status
t15.price T16.PostDate
t15.Currency T16.CloseDate
t15.rate T16.CreateDate
t15.DiscPrcnt T16.UpdateDate
是无法比拟的,就像其他人了。