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

PostgreSQL 9.3:Обединяване на две колони в една

Добре оптимизиран:

WITH t(a, b, ct) AS (
   SELECT columna, columnb, count(*)::int
   FROM   test_1
   GROUP  BY 1, 2
   )
, matrix AS (
   SELECT a.*, b.*, COALESCE(t.ct, 0) AS ct
   FROM        (SELECT DISTINCT ON (a) a, right(a, -1)::int AS sorta FROM t) a
   CROSS  JOIN (SELECT DISTINCT ON (b) b, right(b, -1)::int AS sortb FROM t) b
   LEFT   JOIN t USING (a, b)
   )
(   
SELECT a AS ab, array_agg('"' || b || '" = ' || ct ORDER BY sortb) AS x
FROM   matrix
GROUP  BY 1, sorta
ORDER  BY sorta
)
UNION ALL
(
SELECT b      , array_agg('"' || a || '" = ' || ct ORDER BY sorta)
FROM   matrix
GROUP  BY 1, sortb
ORDER  BY sortb
);

SQL Fiddle.

Всички скоби са задължителни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Намерете размера на байтовете на ред в PostgreSQL

  2. Използването на хибернация на PostgreSQL последователността не засяга таблицата с последователности

  3. Как pg_typeof() работи в PostgreSQL

  4. Как мога да получа разстоянието между две точки на Земята от PostGIS?

  5. Как да конфигурирате PostgreSQL с Postgis за изчисляване на разстояния