sql >> Databáze >  >> RDS >> PostgreSQL

Dynamické názvy sloupců v zobrazení (Postgres)

Můj první sklon je vytvořit tento stůl:

+---------+-------+--------+
| Country | Month | Amount |
+---------+-------+--------+
| UK      | Jan   | 4      |
+---------+-------+--------+
| UK      | Feb   | 12     |
+---------+-------+--------+

atd. a otočte jej. Takže byste začali (například):

SELECT 
  c.country, 
  EXTRACT(MONTH FROM s.eldate) AS month, 
  COUNT(*) AS amount
FROM country AS c
JOIN site AS s ON s.country_id = c.id
WHERE 
  s.eldate > NOW() - INTERVAL '1 year'
GROUP BY c.country, EXTRACT(MONTH FROM s.eldate);

Pak to můžete zapojit do jedné crosstab funkce z tablefunc modul k dosažení pivotu uděláte něco takového:

SELECT * 
FROM crosstab('<query from above goes here>') 
  AS ct(country varchar, january integer, february integer, ... december integer);


  1. MySQL – různé metody, jak poznat aktuálního uživatele

  2. Podat databázi SQLite do Heroku klepnutím?

  3. Jak uniknout čárce a dvojité uvozovce současně pro soubor CSV?

  4. Jak zobrazit databáze MySQL na skriptu PHP?