【DM版本】:DM Database Server 64 V8
【操作系统】:window10
【CPU】:AMD A8-7680 Radeon R7, 10 Compute Cores 4C+6G 3.50 GHz
【问题描述】:
-- 报错用例
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;
单行CTE报错-4083"引用列未找到"
多行CTE执行成功
正常执行,或
返回明确的数据类型错误
导致应用代码在不改变SQL的情况下,因数据量变化而意外失败
影响查询的稳定性和可预测性
查一下 COMPATIBLE_MODE 参数,看看是不是设置成 2 了,换用参数值0试一下,或者修改脚本,在COALESCE中,前后类型保持一致。
你使用的是什么版本数据库,使用select id_code()查询一下版本,本地测试是正常
