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