PostgreSQL
SELECT
a,
STRING_AGG('(' || c || ',' || b || ')', ' ; ')
FROM
tbl
GROUP BY
a;
Chỉnh sửa :Đối với các phiên bản PostgreSQL trước 9.0 (khi STRING_AGG được giới thiệu) và thậm chí trước 8.4 (khi ARRAY_AGG được thêm vào), bạn có thể tạo chức năng tổng hợp tùy chỉnh .
Chỉnh sửa 2 :Đối với các phiên bản trước 8.0 (có lẽ Amazon Redshift dựa trên PostgreSQL 7.4 bằng cách nào đó), cú pháp $$ không được hỗ trợ, vì vậy phần thân hàm cần được đặt trong dấu ngoặc kép và dấu ngoặc kép bên trong phần thân cần phải được thoát ra.
CREATE FUNCTION cut_semicolon(text) RETURNS text AS '
BEGIN
RETURN SUBSTRING($1 FROM 4);
END;
' LANGUAGE 'plpgsql' IMMUTABLE;
CREATE FUNCTION concat_semicolon(text, text) RETURNS text AS '
BEGIN
RETURN $1 || '' ; '' || $2;
END;
' LANGUAGE 'plpgsql' IMMUTABLE;
CREATE AGGREGATE concat_semicolon(
BASETYPE=text,
SFUNC=concat_semicolon,
STYPE=text,
FINALFUNC=cut_semicolon,
INITCOND=''
);
Sau đó, hãy sử dụng tổng hợp đó để thay thế.
SELECT
a,
CONCAT_SEMICOLON('(' || c || ',' || b || ')')
FROM
tbl
GROUP BY
a;
MySQL
SELECT
a,
GROUP_CONCAT(CONCAT('(', c, ',', b, ')') SEPARATOR ' ; ')
FROM
tbl
GROUP BY
a;