PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Scal wiele wierszy w jeden z więcej niż jedną wartością wiersza w kolumnie

Z obecnego stanu możesz po prostu wykonać oś obrotu za pomocą FILTER klauzula:

demo:db<>skrzypce

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

Nie jestem do końca pewien, jak wygląda Twój oryginalny stół. Jeśli jest bardziej tak:

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

Następnie możesz zmodyfikować zapytanie w ten sposób:

demo:db<>skrzypce

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

Edytuj :TO dodał wartość JSON do kolumny produktu:

demo:db<>skrzypce

Wariant 1:Możesz po prostu rzutować typ json wpisz text :

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

Wariant 2:Czytasz wartość z "name" atrybut:

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. Niepowodzenie na produkcji/heroku:GDZIE a.attrelid ='szkoły'::regclass

  2. Pobieranie najpopularniejszych słów kluczowych z kolumny tsvector

  3. PostGIS - konwertuj wielokąt na pojedynczy wielokąt

  4. Rails schema.rb nie zawiera nowej niestandardowej funkcji Postgres

  5. Kolumny bazy danych w Wybierz lub utwórz zestawienia