【问题标题】:How to fix SQL error SAP HANA while using aggregate function如何在使用聚合函数时修复 SQL 错误 SAP HANA
【发布时间】:2020-10-08 09:48:23
【问题描述】:

如果我在 SAP HANA 中运行这个 sql,它会产生以下错误。

(SQL 编辑器)无法执行 'WITH l1 AS(SELECT REMOTE_SOURCE_NAME,OWNER,NAME,MAX(START_TIME) START_TIME,RESULT_STATE FROM ...' 错误:(dberror) 266 - 数据类型不一致:SUM/AVG/STDDEV/VAR 函数只有数字类型可用:第 43 行第 7 列(位置 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,OWNER,NAME,RESULT_STATE
order by NAME ASC),
l2 AS
(SELECT  REMOTE_SOURCE_NAME,OWNER,NAME,START_TIME,END_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,OWNER,NAME,RESULT_STATE,START_TIME,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);

【问题讨论】:

    标签: sql hana


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-02-03
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2021-11-17
      相关资源
      最近更新 更多