注册

单行CTE查询中COALESCE类型混合导致错误的列引用报错(-4083)

偶遇一只猫 2025/06/06 184 4

【DM版本】:DM Database Server 64 V8
【操作系统】:window10
【CPU】:AMD A8-7680 Radeon R7, 10 Compute Cores 4C+6G 3.50 GHz
【问题描述】:

  1. sql用例
-- 报错用例 WITH test_data AS ( SELECT 1 AS id, 100 AS num_value ) SELECT CASE WHEN COALESCE(MAX(num_value), '') IS NULL THEN 0 ELSE MAX(num_value) END FROM test_data GROUP BY id; -- 不报错对照用例 WITH test_data AS ( SELECT 1 AS id, 100 AS num_value UNION ALL SELECT 1 AS id, 200 AS num_value ) SELECT CASE WHEN COALESCE(MAX(num_value), '') IS NULL THEN 0 ELSE MAX(num_value) END FROM test_data GROUP BY id;
  1. 实际结果

单行CTE报错-4083"引用列未找到"
多行CTE执行成功

  1. 预期结果

正常执行,或
返回明确的数据类型错误

  1. 影响分析

导致应用代码在不改变SQL的情况下,因数据量变化而意外失败
影响查询的稳定性和可预测性

回答 0
暂无回答
扫一扫
联系客服