簡體   English   中英

如何在使用聚合 function 時修復 SQL 錯誤 SAP HANA

[英]How to fix SQL error SAP HANA while using aggregate function

如果我在 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 function:第 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);

LOADING_TIME將字符“s”連接到它 - 將數值轉換為字符串。 對於字符串,沒有SUM() function。

如果“s”很重要,那么在求和之后添加它就可以解決問題。 否則,將單位名稱(我猜 s 代表秒)添加到列名將允許客戶端工具仍然使用數值(即排序時)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM