postgrescolumnreferenceidisambiguous
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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,
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 我是⽐较排斥的,但是没办法,有些变量是字段.。