Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dołącz wyniki z zapytania do tego samego wiersza wyników w PostgreSQL - Redshift

PostgreSQL

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

Edytuj :Dla wersji PostgreSQL przed 9.0 (kiedy wprowadzono STRING_AGG) i nawet przed 8.4 (kiedy dodano ARRAY_AGG) możesz stworzyć swój własny niestandardowa funkcja agregująca .

Edytuj 2 :W wersjach wcześniejszych niż 8.0 (być może Amazon Redshift jest w jakiś sposób oparty na PostgreSQL 7.4) składnia $$ nie jest obsługiwana, więc treść funkcji musi być ujęta w cudzysłowy, a cudzysłowy w treści muszą być pominięte.

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

Następnie zamiast tego użyj tego agregatu.

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. baza danych mysql inżynierii wstecznej do tworzenia aplikacji django

  2. PDO nie może połączyć się ze zdalnym serwerem mysql

  3. Jak zainstalować stos (L|M)AMP na iPhonie?

  4. Potrzebujesz MySQL INSERT - SELECT zapytanie dla tabel z milionami rekordów

  5. MySQL/PHP - paginacja numerów stron Wyświetlaj czasami tylko 10 stron