2017-04-09 4 views
0

하위 쿼리 결과를 일반 쿼리에서 전달하려고하지만 대신 하위 쿼리 값이 반환됩니다. 아래 예제에서 숫자 의 결과가 인 두 번째 테이블과 수식이 포함 된 테이블을 쿼리에 사용합니다.postgresql의 쿼리에서 하위 쿼리 값 전달

SELECT  (col1 + col2) AS "Result1", 
      col2   AS "Result2",      
FROM 
myschema.results 

하지만 공식 테이블에서 공식을 가져 하위 쿼리를 사용하고 싶습니다 :

SELECT  (SELECT formula FROM myschema.formulas WHERE id = 'res1') AS "Result1", 
      col2   AS "Result2",      
FROM 
myschema.results 

에서

나는 수식을 하드 코딩 직접 결과를 조회 아무런 문제가 없다 첫 번째 쿼리를 올바르게 얻을 수

Result 1 Result 2 
3   2 

하지만 하위 쿼리를 사용할 때 I inco 직접 얻으십시오 :

Result 1 Result 2 
col1 + col2   2 

어떻게하면 첫 번째 쿼리에서 하위 쿼리 결과가 해석되도록 할 수 있습니까? 조인을 사용하는 몇 가지 솔루션을 찾았지만, 이것이 필요한 이유인지 확신 할 수 없으며이를 달성하는 간단한 방법이 있는지 궁금합니다. 어떤 도움을 주셔서 감사합니다!

+0

귀하가 찾은 가입을 사용하여 솔루션으로 질문을 업데이트하십시오. –

+0

다음과 같은 것이 필요합니다. http://dba.stackexchange.com/questions/33894/store-a-formula-in-a-table-and-use-the-formula-in-a-function – pozs

답변

1

당신이 원하는 것은 동적 SQL입니다.

이와 비슷한 것.

CREATE OR REPLACE FUNCTION foo() 
RETURNS SETOF int AS 
$$ 
    BEGIN 
    RETURN QUERY EXECUTE 'SELECT ' || (SELECT 'x'::text) ||' FROM generate_series(1,10) AS gs(x);'; 
    END; 
$$ LANGUAGE plpgsql;