Mysql
 sql >> база данни >  >> RDS >> Mysql

Добавяне на резултати от заявка към същия ред с резултати в PostgreSQL - Redshift

PostgreSQL

SELECT
  a,
  STRING_AGG('(' || c || ',' || b || ')', ' ; ')
FROM
  tbl
GROUP BY
  a;

Редактиране :За версии на PostgreSQL преди 9.0 (когато беше въведен STRING_AGG) и дори преди 8.4 (когато беше добавен ARRAY_AGG) можете да създадете свой собствен персонализирана агрегатна функция .

Редактиране 2 :За версии преди 8.0 (може би Amazon Redshift по някакъв начин е базиран на PostgreSQL 7.4) синтаксисът $$ не се поддържа, така че тялото на функцията трябва да бъде затворено в кавички, а кавичките в тялото трябва да бъдат екранирани.

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=''
);

След това използвайте този агрегат вместо това.

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Прехвърлете QR кода в MySql база данни

  2. MySQL:Предоставяне на **всички** привилегии на база данни

  3. MySQL Изберете и това, и това

  4. Списък с ограничения от MySQL база данни

  5. Как да съхранявам корелационни стойности между потребителите в база данни, използвайки MySQL и PHP?