2017-04-09 56 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;