数据集配置错误Query:从数据类型 nvarchar 转换为 numeric 时出错

以下是我数据集的代码:

WITH 部门信息 AS (
    SELECT a.职工编号, b.部门名称
    FROM dbo.[员工资料表] a
    LEFT JOIN dbo.[部门] b ON a.部门编号 = b.部门编号
    WHERE a.离厂日期 IS NULL
),
a AS (
    SELECT 
        Number_Employee AS 职工编号, 
        职工姓名, 
        SUM(CASE 
            WHEN Payment_General IS NULL THEN 0
            WHEN ISNUMERIC(Payment_General) = 1 AND Payment_General NOT LIKE '%[^0-9.]%' 
                THEN CAST(Payment_General AS DECIMAL(10,2))
            ELSE 0 
        END) AS 合计金额, 
        CONVERT(varchar(100), Date, 23) AS 日期,
        Number_Order AS 订单编号,
        SUM(Amount) AS 数量
    FROM dbo.[Payment_Punch] a
    WHERE CONVERT(varchar(100), Date, 23) = '${finddate}' 
    GROUP BY Number_Employee, 职工姓名, CONVERT(varchar(100), Date, 23), Number_Order

    UNION ALL

    SELECT 
        职工编号, 
        职工姓名, 
        SUM(CASE 
            WHEN 合计金额 IS NULL THEN 0
            WHEN ISNUMERIC(合计金额) = 1 AND 合计金额 NOT LIKE '%[^0-9.]%' 
                THEN CAST(合计金额 AS DECIMAL(10,2))
            ELSE 0 
        END) AS 合计金额,
        CONVERT(varchar(100), 日期, 23) AS 日期,
        订单编号 AS 订单编号,
        SUM(计件数量) AS 数量
    FROM dbo.[串花工资表] a
    WHERE CONVERT(varchar(100), 日期, 23) = '${finddate}' 
    GROUP BY 职工编号, 职工姓名, CONVERT(varchar(100), 日期, 23), 订单编号

    UNION ALL

    SELECT 
        Number_Employee AS 职工编号, 
        职工姓名, 
        SUM(CASE 
            WHEN Payment_Total IS NULL AND Payment_General IS NULL THEN 0
            WHEN ISNUMERIC(Payment_Total) = 1 AND Payment_Total NOT LIKE '%[^0-9.]%' 
                THEN CAST(Payment_Total AS DECIMAL(10,2))
            WHEN ISNUMERIC(Payment_General) = 1 AND Payment_General NOT LIKE '%[^0-9.]%' 
                THEN CAST(Payment_General AS DECIMAL(10,2))
            ELSE 0 
        END) AS 合计金额,
        CONVERT(varchar(100), Date, 23) AS 日期,
        Number_Order AS 订单编号,
        SUM(Amount_Fitting) AS 数量
    FROM dbo.[Payment_Shape] a
    WHERE CONVERT(varchar(100), Date, 23) = '${finddate}' 
    GROUP BY Number_Employee, 职工姓名, CONVERT(varchar(100), Date, 23), Number_Order
    
    UNION ALL

    SELECT 
        Number_Employee AS 职工编号, 
        职工姓名, 
        SUM(CASE 
            WHEN Payment_Total IS NULL AND Payment_General IS NULL THEN 0
            WHEN ISNUMERIC(Payment_Total) = 1 AND Payment_Total NOT LIKE '%[^0-9.]%' 
                THEN CAST(Payment_Total AS DECIMAL(10,2))
            WHEN ISNUMERIC(Payment_General) = 1 AND Payment_General NOT LIKE '%[^0-9.]%' 
                THEN CAST(Payment_General AS DECIMAL(10,2))
            ELSE 0 
        END) AS 合计金额,
        CONVERT(varchar(100), Date, 23) AS 日期,
        Number_Order AS 订单编号,
        SUM(Amount_Fitting) AS 数量
    FROM dbo.[Payment_Inject] a
    WHERE CONVERT(varchar(100), Date, 23) = '${finddate}' 
    GROUP BY Number_Employee, 职工姓名, CONVERT(varchar(100), Date, 23), Number_Order

    UNION ALL

    SELECT 
        职工编号, 
        职工姓名, 
        SUM(CASE 
            WHEN 金额 IS NULL THEN 0
            WHEN ISNUMERIC(金额) = 1 AND 金额 NOT LIKE '%[^0-9.]%' 
                THEN CAST(金额 AS DECIMAL(10,2))
            ELSE 0 
        END) AS 合计金额,
        CONVERT(varchar(100), 日期, 23) AS 日期,
        订单编号 AS 订单编号,
        SUM(数量) AS 数量
    FROM dbo.[水果_工资表] a
    WHERE CONVERT(varchar(100), 日期, 23) = '${finddate}' 
    GROUP BY 职工编号, 职工姓名, CONVERT(varchar(100), 日期, 23), 订单编号

    UNION ALL

    SELECT 
        Number_Employee AS 职工编号, 
        Name_Employee AS 职工姓名, 
        CONVERT(varchar(100), Date, 23) AS 日期,
        Number_Order AS 订单编号,
        SUM(Amount) AS 数量, 
        SUM(CASE 
            WHEN Wage IS NULL THEN 0
            WHEN ISNUMERIC(Wage) = 1 AND Wage NOT LIKE '%[^0-9.]%' 
                THEN CAST(Wage AS DECIMAL(10,2))
            ELSE 0 
        END) AS 合计金额
    FROM dbo.[Payment_TeYi_Wage] a
    WHERE CONVERT(varchar(100), Date, 23) = '${finddate}' 
    GROUP BY Number_Employee, Name_Employee, CONVERT(varchar(100), Date, 23), Number_Order

    UNION ALL

    SELECT 
        EmployeeNumber AS 职工编号, 
        职工姓名, 
        SUM(CASE 
            WHEN Wage IS NULL THEN 0
            WHEN ISNUMERIC(Wage) = 1 AND Wage NOT LIKE '%[^0-9.]%' 
                THEN CAST(Wage AS DECIMAL(10,2))
            ELSE 0 
        END) AS 合计金额,
        CONVERT(varchar(100), Date, 23) AS 日期,
        OrderNumber AS 订单编号,
        SUM(Quantity) AS 数量
    FROM dbo.[tb_Pu_Wage] a
    WHERE CONVERT(varchar(100), Date, 23) = '${finddate}' 
    GROUP BY EmployeeNumber, 职工姓名, CONVERT(varchar(100), Date, 23), OrderNumber

    UNION ALL

    SELECT 
        Number_Employee AS 职工编号, 
        Name_Employee AS 职工姓名, 
        SUM(CASE 
            WHEN Wage1 IS NULL THEN 0
            WHEN ISNUMERIC(Wage1) = 1 AND Wage1 NOT LIKE '%[^0-9.]%' 
                THEN CAST(Wage1 AS DECIMAL(10,2))
            ELSE 0 
        END) AS 合计金额,
        CONVERT(varchar(100), Date, 23) AS 日期,
        Number_Order AS 订单编号,
        SUM(Amount1) AS 数量
    FROM dbo.[Payment_yinhua_Wage] a
    WHERE CONVERT(varchar(100), Date, 23) = '${finddate}' 
    GROUP BY Number_Employee, Name_Employee, CONVERT(varchar(100), Date, 23), Number_Order

    UNION ALL

    SELECT 
        职工编号, 
        职工姓名, 
        SUM(CASE 
            WHEN 合计金额 IS NULL THEN 0
            WHEN ISNUMERIC(合计金额) = 1 AND 合计金额 NOT LIKE '%[^0-9.]%' 
                THEN CAST(合计金额 AS DECIMAL(10,2))
            ELSE 0 
        END) AS 合计金额,
        CONVERT(varchar(100), 日期, 23) AS 日期,
        a.订单编号 AS 订单编号,
        SUM(计件数量) AS 数量
    FROM dbo.[真树杆工资表] a
    WHERE CONVERT(varchar(100), 日期, 23) = '${finddate}' 
    GROUP BY 职工编号, 职工姓名, CONVERT(varchar(100), 日期, 23), a.订单编号
)
SELECT a.*, d.部门名称
FROM a
LEFT JOIN 部门信息 d ON a.职工编号 = d.职工编号
WHERE 
    ${if(len(department) == 0, '1=1', "d.部门名称 IN ('" + replace(department, ",", "','") + "')")}

帆软用户PoN24uZLlw 发布于 2025-7-10 11:04
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
华莉星宸Lv7专家互助
发布于2025-7-10 11:12

union all

每一部分查询出来的 字段类型要对应上

你要结合你的数据检查

最佳回答
0
Z4u3z1Lv6专家互助
发布于2025-7-10 11:13

UNION ALL 前后的SQL中有一个字段无法从nvarchar 转换位numeric 

排查方法,逐条UNION 

最佳回答
0
煮酒话青梅Lv3见习互助
发布于2025-7-10 11:25

微信截图_20250710112347.png

  • 2关注人数
  • 35浏览人数
  • 最后回答于:2025-7-10 11:25
    请选择关闭问题的原因
    确定 取消
    返回顶部