postgrescolumnreferenceidisambiguous
在执⾏函数时会出现该问题
解决办法:
在查询时为表格指定别名,并且查询字段指定表名如: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,
reference groupA.%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 我是⽐较排斥的,但是没办法,有些变量是字段.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。