ホームページ >データベース >mysql チュートリアル >`tablefunc`モジュールを使用してpostgreSqlでCrosStabクエリを作成する方法は?

`tablefunc`モジュールを使用してpostgreSqlでCrosStabクエリを作成する方法は?

DDD
DDDオリジナル
2025-01-25 11:16:10468ブラウズ

postgresqlクロステーブルクエリ詳細な説明とtablefuncモジュールアプリケーション

How to Create Crosstab Queries in PostgreSQL using the `tablefunc` module?

この記事では、PostgreSQLのクエリでクロステーブルを作成する方法を紹介します。

tablefuncインストール

モジュール

tablefuncまず、拡張子:

をインストールする必要があります

tablefunc

<code class="language-sql">CREATE EXTENSION IF NOT EXISTS tablefunc;</code>

テストテーブル:

ターゲットクロステーブル:

<code class="language-sql">CREATE TABLE tbl (
   section   text,
   status    text,
   ct        integer
);

INSERT INTO tbl VALUES 
  ('A', 'Active', 1), ('A', 'Inactive', 2),
  ('B', 'Active', 4), ('B', 'Inactive', 5),
  ('C', 'Inactive', 7);</code>

function

単一のパラメーターフォーム(限定):
<code>Section | Active | Inactive
---------+--------+----------
A       |      1 |        2
B       |      4 |        5
C       |        |        7</code>

crosstabデュアルパラメーターフォーム(推奨):

入力の複数の行の影響単一のパラメーターフォーム:

<code class="language-sql">SELECT *
FROM   crosstab(
   'SELECT section, status, ct
    FROM   tbl
    ORDER  BY 1,2'  -- 必须为 "ORDER BY 1,2"
   ) AS ct ("Section" text, "Active" int, "Inactive" int);</code>

左から右への充填の可用性。

過剰値は破棄されます。
<code class="language-sql">SELECT *
FROM   crosstab(
   'SELECT section, status, ct
    FROM   tbl
    ORDER  BY 1,2'  -- 也可简化为 "ORDER BY 1"

  , $$VALUES ('Active'::text), ('Inactive')$$
   ) AS ct ("Section" text, "Active" int, "Inactive" int);</code>

以前の入力銀行が推奨されます。

ダブルパラメーターフォーム:

各入力値は、専用の列に割り当てられます。
  • 以前の割り当てをカバーします。
  • 遅い入力銀行が推奨されます。
  • 高度な例

TableFuncを使用して、視点の複数の列を実行します

  • ダイナミックパースペクティブ
  • by by by by by by by by by by by by by byの代替手段

postgreSql 9.6この要素コマンドをPSQLに導入しました:

    以上が`tablefunc`モジュールを使用してpostgreSqlでCrosStabクエリを作成する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。