PostgreSQL 交叉表查詢詳解及tablefunc
模組應用
本文將詳細介紹如何在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>
目標交叉表:
<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>
多行輸入的影響
單一參數形式:
雙參數形式:
進階範例
psql中的crosstabview
PostgreSQL 9.6 在psql中引入了此元命令:
<code class="language-sql">db=> SELECT section, status, ct FROM tbl \crosstabview</code>
以上是如何使用「tablefunc」模組在 PostgreSQL 中建立交叉表查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!