sql >> Database teknologi >  >> RDS >> Mysql

Tilføj resultater fra en forespørgsel til den samme resultatrække i PostgreSQL - Redshift

PostgreSQL

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

Rediger :For versioner af PostgreSQL før 9.0 (da STRING_AGG blev introduceret) og endda før 8.4 (da ARRAY_AGG blev tilføjet) kan du oprette din egen tilpasset aggregatfunktion .

Rediger 2 :For versioner før 8.0 (måske er Amazon Redshift baseret på PostgreSQL 7.4 på en eller anden måde) understøttes $$-syntaksen ikke, så funktionsteksten skal være omgivet af anførselstegn, og anførselstegn inde i brødteksten skal escapes.

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

Brug så det aggregat i stedet.

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. Sådan strengformateres SQL IN-sætning med Python

  2. Råd om SQL Server-ydelse fra Brent Ozar og Pinal Dave

  3. VÆLG forespørgsel i WHERE-klausulen i UPDATE-forespørgslen

  4. Oracle 11g - Unpivot