Câu hỏi đầy đủ viết lại
Tôi đang tìm một hàm tổng hợp First ().
Ở đây tôi tìm thấy một cái gì đó gần như hoạt động:
CREATE OR REPLACE FUNCTION public.first_agg ( anyelement, anyelement )
RETURNS anyelement LANGUAGE sql IMMUTABLE STRICT AS $$
SELECT $1;
$$;
-- And then wrap an aggregate around it
CREATE AGGREGATE public.first (
sfunc = public.first_agg,
basetype = anyelement,
stype = anyelement
);
Vấn đề là khi một cột varchar (n) đi qua hàm đầu tiên (), nó sẽ được chuyển đổi thành varchar đơn giản (không có kích thước). Cố gắng trả về truy vấn trong một hàm dưới dạng RETURNS SETOF bất kỳ, tôi nhận được lỗi sau:
LRI: cấu trúc truy vấn không khớp với loại kết quả chức năng Estado de SQL: 42804 Detalhe: Thay đổi ký tự loại trả về không khớp với ký tự loại dự kiến khác nhau (40) trong cột 2. Contexto: Hàm PL / pgQuery vsr_table_at_time (bất kỳ thời gian, không có múi giờ ) dòng 31 tại QUAY LẠI
Trong cùng một trang wiki có một liên kết đến Phiên bản C của chức năng sẽ thay thế ở trên. Tôi không biết cách cài đặt nó, nhưng tôi tự hỏi liệu phiên bản này có thể giải quyết vấn đề của tôi không.
Trong khi đó, có cách nào để tôi có thể thay đổi chức năng trên để nó trả về cùng loại chính xác của cột đầu vào không?
DISTINCT ON
sẽ không hoạt động trong trường hợp này. Đây không phải là một hàm tổng hợp, bạn thực sự đang lọc dữ liệu và vì vậy bạn chỉ có thể thực hiện một lần.