注册

很好奇这个GROUP BY语句为何报错

飞羽流星 2021/08/27 1266 2

达梦版本:8.1
系统:Windows 10
架构:x64

SELECT CASE
    WHEN ("m"."state" = 1) AND ("m"."deadline" < :__now_1) THEN -1
    ELSE CAST("m"."state" AS INT)
END AS "state",  CAST(COUNT(*) AS INT)  AS "count"
FROM "MY_SCHEMA"."MY_TASK" AS "m"
GROUP BY CASE
    WHEN ("m"."state" = 1) AND ("m"."deadline" < :__now_1) THEN -1
    ELSE CAST("m"."state" AS INT)
END

字段:
state:INT
deadline:DATETIME

参数:
:__now_1:当前时间

SQL语句逻辑:
state(状态)字段对数据进行分组统计数量,若state状态为1且deadline(截止日期)字段的值小于当前时间的话,state返回为-1,其他情况返回state原值

这条SQL语句会产生错误:

第9 行附近出现错误[-4080]:
不是 GROUP BY 表达式

不清楚这个异常信息产生的原因

这条语句是由以下linq翻译的结果

var now = DateTime.Now;
from task in MY_SCHEMA.MY_TASK
group task by task.state == 1 && task.plan_time < now ? -1 : task.state into g
select new
{
    state = g.Key,
    count = g.Count()
};
回答 0
暂无回答
扫一扫
联系客服