PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PostgreSQL 9.3:Menyatukan dua kolom menjadi satu

Dioptimalkan dengan baik:

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.

Semua tanda kurung wajib diisi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah tabel normal menjadi tabel cstore_fdw asing

  2. Gabungkan tabel pada kolom kunci asing/primer komposit dalam kueri

  3. org.postgresql.util.PSQLException:FATAL:maaf, sudah terlalu banyak klien

  4. Variabel yang berisi jumlah baris yang terpengaruh oleh DELETE sebelumnya? (dalam sebuah fungsi)

  5. Dalam migraiton Rails, bagaimana cara menetapkan nilai default kolom menjadi SEKARANG () alih-alih waktu ketika saya menjalankan migrasi?