2017-06-28 20 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; 
相关问题