【问题标题】:Issue with Converting data type for SQL Query Union转换 SQL 查询联合的数据类型的问题
【发布时间】:2019-02-05 15:59:40
【问题描述】:

我编写了以下查询来合并生产订单和库存转移的未清项目。对于来自 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

【问题讨论】:

  • 您有一堆不匹配的列,根据它们的名称。那么 t15.LineStatus 和 t16.ItemCode 是同一类型吗?还是 t15.linenum 和 t16.ProdName 一样?您可以检查要联合在一起的每一列的数据类型。

标签: sql sql-server type-conversion


【解决方案1】:

当使用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 

无与伦比,就像其他人一样。

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多