sql >> Database teknologi >  >> RDS >> PostgreSQL

Dynamiske kolonnenavne i visning (Postgres)

Min første tilbøjelighed er at fremstille denne tabel:

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

osv. og dreje det. Så du starter med (for eksempel):

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);
 

Du kan derefter tilslutte det til en crosstab funktioner fra tablefunc modul for at opnå omdrejningspunktet, gør noget som dette:

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


  1. Jeg får hele tiden fejl i min procedure, der hjælper med at tilføje nyt kursus, og jeg har sat krav i beskrivelsen

  2. Hvad er forskellen mellem Office 365 og Office 2016?

  3. Hvordan opretter man en visning, der viser data fra de seneste 4 kvartaler?

  4. Læser PHP7's PDO ext hele resultatsættet i hukommelsen?