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 我是比較排斥的,但是沒辦法,有些變量是字段.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM