2017-06-28 52 views
0

比方說,我有以下的Postgres函數:如何從postgres函數中選擇特定的列?

SELECT * FROM get_summary(10); 

但如果我要選擇這樣的東西:

SELECT value, amount FROM get_summary(10); 

CREATE OR REPLACE FUNCTION get_summary(
    IN param INT) 
    RETURNS TABLE (
    value NUMERIC, 
    amount NUMERIC) AS $$ 
BEGIN 

    RETURN QUERY 
    SELECT sum(value) AS value, sum(amount) AS amount FROM ... 

END; 
$$ LANGUAGE plpgsql; 

我可以從這個功能類似的選擇但後來我收到以下錯誤:

[2017-06-28 12:49:53] [42702] ERROR: column reference "value" is ambiguous 
[2017-06-28 12:49:53] Detail: It could refer to either a PL/pgSQL variable or a table column. 

如何從postgres函數中選擇特定列?

回答

3

嘗試使用別名來表 例如:

CREATE OR REPLACE FUNCTION get_summary(
    IN param INT) 
    RETURNS TABLE (
    value NUMERIC, 
    amount NUMERIC) AS $$ 
BEGIN 

    RETURN QUERY 
    SELECT sum(t.value), sum(t.amount) AS amount FROM your_table t 

END; 
$$ LANGUAGE plpgsql; 

或試試這個:

SELECT t.value, t.amount FROM get_summary(10) t; 
相關問題