0

나는이 쿼리의 결과를 포맷하기 위해 노력하고있어은 plpgsql 기능에 오류 : 배열 값이로 시작해야합니다 "{"또는 차원 정보

{"(\"2013-10-16 15:10:40\",1,00:00:00)","(\"2013-10-16 15:11:52\",1,00:00:48)"} 

나는 이런 식으로 뭔가 싶어 :

2013-10-16 15:10:40,1,00:00:00 | 2013-10-16 15:11:52,1,00:00:48 | 

을하지만 쿼리를 실행할 때 전자를 얻을 수 rror :

array value must start with "{" or dimension information 
+0

질문을 두 번 편집했습니다. 그에 맞게 적응하십시오. 귀하의 버전의 Postgres를 추가하고 질문에 "감사합니다"메모를 삼가하십시오. 그것을 작업 응답에 대한 설명에 넣을 수 있습니다. 작업 응답은 다른 사람들에게 그것이 당신을 위해 일했는지 여부를 알려줍니다. –

답변

1

당신은 실제로 배열 유형을하지 않으려하지만, 캐릭터 라인 표현. 는 다음과 같이 얻을 수있다 :

CREATE OR REPLACE FUNCTION "alarmEventList"(sampleid integer 
              , starttime timestamp 
              , stoptime timestamp 
              , OUT result text) AS 
$func$ 
BEGIN 

SELECT INTO result string_agg(concat_ws(',' 
         ,to_char("Timestamp", 'YYYY-MM-DD HH24:MI:SS') 
         ,"AlertLevel" 
         ,"Timestamp" - ts_lag) 
        , ' | ') 
FROM (
    SELECT "Timestamp" 
     ,"AlertLevel" 
     ,lag("Timestamp") OVER (ORDER BY "Timestamp") AS ts_lag 
    FROM "Judgements" 
    WHERE "SampleID" = sampleid 
    AND "Timestamp" >= starttime 
    AND "Timestamp" <= stoptime 
    ) res 
WHERE "AlertLevel" > 0; 

END 
$func$ LANGUAGE plpgsql 

수동 string_agg()concat_ws()에.

+0

달콤한 !!!, 감사합니다. –