SQL - CASE WHEN错误?

时间:2012-08-31 20:23:51

标签: sql intersystems-cache

有人可以帮帮我吗?我不确定为什么这段代码不能执行:

'0' || CASE
WHEN (EAmain.ActivityStopMin - EAmain.ActivityStartMin) < 0 THEN         (DATEDIFF(hh,EAmain.ActivityStartTimeHours || ':' ||     EAmain.ActivityStartTimeMin,EAmain.ActivityStopTimeHours || ':' ||     EAmain.ActivityStopTimeMin)-1)
WHEN (EAmain.ActivityStopMin - EAmain.ActivityStartMin) >= 0 THEN
(DATEDIFF(hh,EAmain.ActivityStartTimeHours || ':' ||     EAmain.ActivityStartTimeMin,EAmain.ActivityStopTimeHours || ':' ||     EAmain.ActivityStopTimeMin))
END || ':' || (DATEDIFF(n,EAmain.ActivityStartTimeHours || ':' ||     EAmain.ActivityStartTimeMin,EAmain.ActivityStopTimeHours || ':' ||     EAmain.ActivityStopTimeMin)#60) || '0' AS ActivityTotalTime,

编辑: 我找到了错误代码,这里是:

错误#5540:SQLCODE:-29消息:在适用的表中找不到字段'EAMAIN.ACTIVITYSTOPMIN'^ SELECT Name,Start_Time,Stop_Time,Visit_Date,Total_Time,ActivityStartTime,ActivityStopTime,CASE WHEN LEN(ActivityTotalTime)=?那么SUBSTR(ActivityTotalTime,?,?)WHEN LEN(ActivityTotalTime)=?然后,ActivityTotalTime结束作为ActivityTotalTime,Discipline FROM(选择人口统计。姓名,访问次数,Start_Time,访问次数,Stop_Time,访问次数,访问次数,访问次数.Total_Time,EAmain.ActivityStartTime,EAmain。活动停止时间,?|| CASE WHEN(EAmain.ActivityStopMin -

再次编辑!: 这段代码是在CASE语句之前实现的,它起作用了:

'0' || DATEDIFF(hh,EAmain.ActivityStartTimeHours || ':' ||    
EAmain.ActivityStartTimeMin,EAmain.ActivityStopTimeHours || ':' ||     
EAmain.ActivityStopTimeMin) || ':' || (DATEDIFF(n,EAmain.ActivityStartTimeHours || ':' || 
EAmain.ActivityStartTimeMin,EAmain.ActivityStopTimeHours || ':' ||    
EAmain.ActivityStopTimeMin)#60) || '0' AS ActivityTotalTime,

1 个答案:

答案 0 :(得分:1)

在最后一行你EAmain.ActivityStartTimeMin,EAmain.ActivityStopTimeHours。这个逗号似乎是错位的。与最后一行的)#60)几个字符一样。

EAmain.ACTIVITYSTOPMIN不存在。 :)我在你的错误信息中看到EMain不是一个表而是一个查询。确保您也在查询中选择该字段。