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

Gabungkan beberapa baris menjadi satu dengan lebih dari satu nilai baris dalam satu kolom

Dari kondisi Anda saat ini, Anda cukup melakukan pivot menggunakan FILTER klausa:

demo:db<>biola

SELECT
    response,
    document,
    MAX(bill) FILTER (WHERE label = 'bill') as bill,
    MAX(answer) FILTER (WHERE label = 'amount') as amount,
    MAX(product) FILTER (WHERE label = 'product') as product,
    MAX(answer) FILTER (WHERE label = 'price') as price
FROM t
GROUP BY response, document

Saya tidak yakin, bagaimana tampilan tabel asli Anda. Jika lebih seperti ini:

response | document | label   | value
-------: | -------: | :------ | :----
71788176 | 79907201 | bill    | 26899
71788176 | 79907201 | amount  | 1    
71788176 | 79907201 | product | shoes
71788176 | 79907201 | price   | 25.99

Kemudian Anda dapat memodifikasi kueri seperti ini:

demo:db<>biola

SELECT
    response,
    document,
    MAX(value) FILTER (WHERE label = 'bill') as bill,
    MAX(value) FILTER (WHERE label = 'amount') as amount,
    MAX(value) FILTER (WHERE label = 'product') as product,
    MAX(value) FILTER (WHERE label = 'price') as price
FROM t
GROUP BY response, document

Sunting :UNTUK menambahkan nilai JSON ke kolom produk:

demo:db<>biola

Varian 1:Anda cukup menggunakan tipe json ke dalam ketik text :

MAX(product::text) FILTER (WHERE label = 'product') as product,

Varian 2:Anda membaca nilai dari "name" atribut:

MAX(product ->> 'name') FILTER (WHERE label = 'product') as product,



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres menutup koneksi selama kueri setelah beberapa ratus detik saat menggunakan Psycopg2

  2. psycopg2 E' di atas meja, bidang, dan skema

  3. menjalankan total menggunakan fungsi windows di sql memiliki hasil yang sama untuk data yang sama

  4. Peningkatan otomatis, tetapi hilangkan nilai yang ada di kolom

  5. Django Postgresql menjatuhkan default kolom saat bermigrasi