sql >> Database >  >> RDS >> PostgreSQL

Dynamische kolomnamen in beeld (Postgres)

Mijn eerste neiging is om deze tabel te maken:

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

enz. en draai het. Dus je zou beginnen met (bijvoorbeeld):

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

U kunt dat dan aansluiten op een van de crosstab functies van de tablefunc module om de spil te bereiken, doe je zoiets als dit:

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


  1. MYSQL Tabel maken met standaardwaarde (expressie) naar een kolom

  2. Het volgnummer van een database-e-mailaccount binnen een profiel in SQL Server (T-SQL) wijzigen

  3. Waarom neemt de automatische verhoging van MySQL toe bij mislukte invoegingen?

  4. Oracle 12c XML haalt waarde uit antwoord