You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ISNULL函数与LEAD函数结合使用遇到问题求助

解决LEAD与ISNULL结合使用的问题

你的问题出在ISNULL函数的语法使用错误——你把LEAD列的别名NextStateTime放在了ISNULL的括号内部,这不符合SQL语法规则。正确的做法是先通过LEAD计算出目标值,再用ISNULL包裹整个LEAD表达式,最后给处理后的结果加上别名。

修正后的完整SQL语句

DECLARE @ReportTimeStart DATETIME = '2019-04-25 06:50'
DECLARE @ReportTimeEnd DATETIME = '2019-04-25 23:59';

SELECT 
    [tbl_tg_machinestate_ndx], 
    [Machine_State], 
    [t_stamp], 
    ISNULL(LEAD([t_stamp]) OVER (ORDER BY [tbl_tg_machinestate_ndx]), @ReportTimeEnd) AS NextStateTime
FROM [db_SPE_Carrig].[dbo].[tbl_TG_MachineState]
WHERE [t_stamp] BETWEEN @ReportTimeStart AND @ReportTimeEnd

逻辑说明

  • LEAD函数会按指定顺序获取下一行的t_stamp值,最后一行没有后续行,所以默认返回NULL
  • ISNULL函数会检查LEAD的返回结果:如果是NULL,就替换为你设定的报表结束时间@ReportTimeEnd;否则保留原有的t_stamp值
  • 别名AS NextStateTime需要放在整个ISNULL表达式的末尾,用来命名处理后的列

执行这段代码后,最后一行的NextStateTime就会显示为2019-04-25 23:59,而不是NULL了。

内容的提问来源于stack exchange,提问作者NickoRoboto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:32:44