2017-04-09 12 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; 
関連する問題