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