在執行函數時會出現該問題
解決辦法:
在查詢時為表格指定別名,並且查詢字段指定表名如: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 我是比較排斥的,但是沒辦法,有些變量是字段.