sql >> データベース >  >> RDS >> PostgreSQL

ビュー内の動的列名(Postgres)

    私の最初の傾向は、このテーブルを作成することです:

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

    などとそれをピボットします。したがって、(たとえば)から始めます:

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

    次に、それを1つのcrosstabに接続できます。 tablefuncの関数 モジュール ピボットを達成するには、次のようなことを行います:

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


    1. 本番PostgreSQLデータベースの管理を容易にする

    2. COMMITは何をしますか?

    3. pg_query_paramsはエラーを返します:バインドメッセージは2つのパラメーターを提供しますが、プリペアドステートメントには1つのパラメーターが必要です

    4. MariaDBでのTRUNCATE()のしくみ