使用聚合函数时如何修复SQL错误SAP HANA

问题描述

如果我在SAP HANA中运行此sql,则会产生以下错误

sql编辑器)无法执行“使用AS AS SELECT REMOTE_SOURCE_NAME,OWNER,NAME,MAX(START_TIME)START_TIME,RESULT_STATE FROM ...” 错误:(dberror)266-数据类型不一致:SUM / AVG / STDDEV / VAR函数只能使用数字类型:第43行第7行(在pos 654处)

如果我排除了sql select sum(LOADING_TIME) AS TOTAL_LOADING_TIME的这一部分,那么它将起作用。

如何解决该问题以获得total_loading_time

WITH l1 AS(
SELECT  REMOTE_SOURCE_NAME,OWNER,NAME,MAX(START_TIME) START_TIME,RESULT_STATE
FROM "MEAG_EIM_SHARED"."meag.eim.shared::replication.Log"
WHERE TYPE = 'INITIAL' AND RESULT_STATE = 'COMPLETED' 
AND REMOTE_SOURCE_NAME='RS_SDI_IMMO'
group by REMOTE_SOURCE_NAME,RESULT_STATE
order by NAME ASC),l2 AS
(SELECT  REMOTE_SOURCE_NAME,START_TIME,END_TIME,RESULT_STATE,END_TIME
order by NAME ASC)

select sum(LOADING_TIME)  AS TOTAL_LOADING_TIME
from(
select layer1.REMOTE_SOURCE_NAME,layer1.OWNER,layer1.name,layer1.RESULT_STATE,layer1.start_time start_time,layer2.end_time end_time,SECONDS_BETWEEN(layer1.START_TIME,layer2.END_TIME) || 's' LOADING_TIME

from l1  layer1 inner join l2 AS layer2
on layer1.start_time=layer2.start_time
order by name);

解决方法

LOADING_TIME具有连接的字符“ s”-将数字值转换为字符串。 对于字符串,没有SUM()函数。

如果具有“ s”很重要,则在求和后将其添加将解决问题。 否则,在列名称中添加单位面额(我猜s代表秒)将使客户端工具仍然可以使用数字值(即在排序时)