postgres column reference "id" is ambiguous

在执行函数时会出现该问题
解决办法:
在查询时为表格指定别名,并且查询字段指定表名如:table.field_name
不过说来也奇怪,我就查一个表,怎么会出现模糊的字段呢

-- 销售报表查询条件,汇总方式可能会有多种情况,
/*
    月环比:
    1. 每个客户的环比,
    2. 每个销售人员的环比
    3. 每种产品的环比

    年同比:
    客户,销售员,产品,基本上不会有三个维度一起查看的情况。

    数据累加:
    这个可以在两种表中添加;

    所以基础表格字段:销售员,客户,产品,时间,销量,销售额
    根据用户选择的条件不同进行不同维度的汇总。

    需要存储一个动态字段:时间类型,统计维度。
    传入不同的参数返回不同的值,这个感觉需要使用函数来实现,返回table
 */
drop function if exists func_sale_report;
create or replace function func_sale_report(par_field varchar, par_date_type varchar,par_date varchar)
    returns table
            (
                field1          varchar,
                field_value     varchar,
                date_type       varchar,
                date_value      varchar,
                date_year       varchar,
                price_subtotal1 numeric,
                delivered       numeric
            )
as
$$
begin
    return query
        execute format('select ''%1$s''::varchar,
                        A.%1$s::varchar,
                        ''%2$s''::varchar,
                        to_char(A.date, ''%2$s'')::varchar as month,
                        to_char(A.date, ''YYYY'')::varchar as year,
                        sum(A.price_subtotal) as price_subtotal,
                        sum(A.qty_delivered)  as qty_delivered
                 from sale_report as A where date>''%3$s''::date
                 group by A.%1$s,to_char(A.date, ''YYYY''), to_char(A.date, ''%2$s'')
                 order by A.%1$s,to_char(A.date, ''YYYY''),to_char(A.date, ''%2$s'')', par_field, par_date_type,par_date);
end
$$ language plpgsql volatile;

将就着看吧,用excute 执行sql 我是比较排斥的,但是没办法,有些变量是字段.


懂得,原来世界如此简单!

原文地址:https://www.cnblogs.com/qianxunman/p/15354958.html