2011-11-07 2 views
-1

다음 plpgsql 함수를 SQL 함수로 다시 작성할 수 있습니까?
가장 최근의 타임 스탬프로 데이터를 집계하고 있지만 plpgsql을 지원하지 않는 heroku에 배포하려고합니다.
이 함수를 사용하는 원래 쿼리를 완전히 다시 작성할 수는 있지만 다른 집계 함수를 삭제할 수있는 유연성을 유지하고 싶습니다.plpgsql 함수를 SQL에 다시 작성

CREATE OR REPLACE FUNCTION recent_accum(anyelement, anyelement) 
    RETURNS anyelement AS $$ 
    BEGIN 
     IF $1.tstamp IS NULL and $2.tstamp IS NOT NULL 
      THEN RETURN $2; 
     ELSEIF $1.tstamp IS NOT NULL and $2.tstamp IS NULL 
      THEN RETURN $1; 
     ELSEIF $2.tstamp > $1.tstamp 
      THEN RETURN $2; 
     ELSE RETURN $1; 
     END IF; 
    END; 
    $$ LANGUAGE plpgsql; 

답변

0

CASE를 사용하여 IF/ELSEIF 체인을 다시 쓰려면 어떻게됩니까?

CASE 
WHEN $1.tstamp IS NULL AND $2.tstamp IS NOT NULL 
    THEN $2 
-- ... 
ELSE $1 
END