HANA SQL QUERY的Where子句中如何使用Case语句

2020-08-20 09:22发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,专家

我有一个要求,在这里我需要找到符合少数条件的记录总数。

我有两个表1)CALL_REGISTER 2)CALL_RESOLVED。

在通话中提出服务请求时,我们在CALL_REGISTER表上以call_no作为键进行输入

服务请求解决后,我们还要在CALL_RESOLVED表中以call_no作为键进行输入

现在我们有一个要求,我需要获取交易商xxx的记录数,调用类别即CATEG为C1

且时差少于24小时。

根据状态考虑时差。

状态为"已解决"时,请考虑呼叫创建日期时间和"呼叫已解决日期时间"之间的小时差。 在CALL_RESOLVED TABLE的JOB_DONE_DATE中捕获呼叫解决日期的地方。

状态无法解决时,请考虑呼叫创建日期时间与当前时间戳记之间的小时差。

下面是我的Query,但是在代码块后出现如下所示的错误。

选择COUNT(*)OVER()作为TOTAL_C1_COUNT,A.STATUS来自CALL_REGISTER A左加入CALL_RESOLVED B ON A.CALL_NO = B.CALL_NO
 A.DEALER_CODE IN('XXX')和A.CATEG IN('C1')AND
 案例A.状态
 当"已解决"
 然后
 SECONDS_BETWEEN(TO_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,'',A.CALL_CREATION_TIME)),TO_TIMESTAMP(CONCAT(CONCAT(B.JOB_DONE_DATE,'',, B.JOB_DONE_TIME)))/(24 * 3600)BETWEEN 0 与24
 其他
 (SECONDS_BETWEEN(TO_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,'',A.CALL_CREATION_TIME)),CURRENT_TIMESTAMP)/(24 * 3600))在0和24之间
 结束
 

 SAP DBTech JDBC:[257]:sql语法错误:" BETWEEN"附近的语法不正确:第6行col 165(在pos 400处)

 

善待有需要的人。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,专家

我有一个要求,在这里我需要找到符合少数条件的记录总数。

我有两个表1)CALL_REGISTER 2)CALL_RESOLVED。

在通话中提出服务请求时,我们在CALL_REGISTER表上以call_no作为键进行输入

服务请求解决后,我们还要在CALL_RESOLVED表中以call_no作为键进行输入

现在我们有一个要求,我需要获取交易商xxx的记录数,调用类别即CATEG为C1

且时差少于24小时。

根据状态考虑时差。

状态为"已解决"时,请考虑呼叫创建日期时间和"呼叫已解决日期时间"之间的小时差。 在CALL_RESOLVED TABLE的JOB_DONE_DATE中捕获呼叫解决日期的地方。

状态无法解决时,请考虑呼叫创建日期时间与当前时间戳记之间的小时差。

下面是我的Query,但是在代码块后出现如下所示的错误。

选择COUNT(*)OVER()作为TOTAL_C1_COUNT,A.STATUS来自CALL_REGISTER A左加入CALL_RESOLVED B ON A.CALL_NO = B.CALL_NO
 A.DEALER_CODE IN('XXX')和A.CATEG IN('C1')AND
 案例A.状态
 当"已解决"
 然后
 SECONDS_BETWEEN(TO_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,'',A.CALL_CREATION_TIME)),TO_TIMESTAMP(CONCAT(CONCAT(B.JOB_DONE_DATE,'',, B.JOB_DONE_TIME)))/(24 * 3600)BETWEEN 0 与24
 其他
 (SECONDS_BETWEEN(TO_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,'',A.CALL_CREATION_TIME)),CURRENT_TIMESTAMP)/(24 * 3600))在0和24之间
 结束
 

 SAP DBTech JDBC:[257]:sql语法错误:" BETWEEN"附近的语法不正确:第6行col 165(在pos 400处)

 

善待有需要的人。

付费偷看设置
发送
4条回答
半个程序猿
1楼 · 2020-08-20 10:05.采纳回答

对不起,一开始没有想法。

答案是放在个案之间,个案仅根据条件返回值,比较不属于个案的一部分

从TOTAL_C1_COUNT中选择COUNT(*)OVER()个,从CALL_REGISTER的A.STATUS左联接CALL_RESOLVED B在A.CALL_NO = B.CALL_NO
 A.DEALER_CODE IN('XXX')和A.CATEG IN('C1')AND
 案例A.状态
 当"已解决"
 然后
 SECONDS_BETWEEN(TO_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,''),A.CALL_CREATION_TIME)),TO_TIMESTAMP(CONCAT(CONCAT(B.JOB_DONE_DATE,'',, B.JOB_DONE_TIME)))/(24 * 3600)
 其他
 (SECONDS_BETWEEN(TO_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,''),A.CALL_CREATION_TIME)),CURRENT_TIMESTAMP)/(24 * 3600))
 结束
  0和24之间
Baoming ROSE
2楼-- · 2020-08-20 09:55

hi Artem Tkachev

感谢! 很好!!!!!!

shere_lin
3楼-- · 2020-08-20 10:10

尝试执行此查询并更新结果

选择COUNT(*)AS TOTAL_C1_COUNT,A  。状态 ,
        案例A.STATUS ='已解决'
                         SECONDS_BETWEEN(TO_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,''),
                                          A.CALL_CREATION_TIME)),
                                          TO_TIMESTAMP(CONCAT(CONCAT(B.JOB_DONE_DATE,''),
                                          B.JOB_DONE_TIME)))/(24 * 3600)
                         ELSE 0 END AS RESOLVED_TIME,
        案例A.STATUS!='已解决'
                         (SECONDS_BETWEEN(TO_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,''),
                                           A.CALL_CREATION_TIME)),
                                           CURRENT_TIMESTAMP)/(24 * 3600))
                         ELSE 0 END AS WORKING_TIME
 从CALL_REGISTER A左加入CALL_RESOLVED B于A.CALL_NO = B.CALL_NO
 A.DEALER_CODE IN('XXX')和A.CATEG IN('C1');
 
追夢秋陽
4楼-- · 2020-08-20 09:54

是的,需要分组依据,

我只想查看结果-基于我可以继续使用的结果-某种子查询

< p>能否请您提供该查询的结果

一周热门 更多>