PostgreSQL 交叉表查詢:使用 crosstab()
函數建立交叉表
PostgreSQL 的交叉表查詢可以將資料轉換為更易於閱讀的表格格式,其中值按類別分組,行代表不同的屬性值。可以使用 tablefunc
模組中的 crosstab()
函數建立交叉表查詢。
改進的測試案例
考慮以下表格:
<code>Section Status Count 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 NULL 7</code>
安全形式
要建立此交叉表查詢,可以使用 crosstab()
的雙參數形式:
<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>
這種形式是“安全的”,因為它確保每個屬性都分配到其專用的列,即使存在多餘的輸入行。在本例中,Section C 的值填入 Inactive 列中,但 Active 列保持 NULL。
處理多餘的輸入行
crosstab()
的兩種形式對多餘的輸入行的處理方式不同。單參數形式從左到右填充可用的值列,丟棄多餘的值。雙參數形式將每個輸入值分配到其專用的列,覆蓋任何先前的分配。
進階範例
交叉表查詢可用於各種進階場景,例如:
psql 中的 crosstabview
PostgreSQL 9.6 在其互動式終端機 psql 中引入了 crosstabview
元命令。它允許您運行交叉表查詢並以表格格式顯示結果。
<code class="language-sql">db=> SELECT section, status, ct FROM tbl \crosstabview</code>
以上是如何使用「crosstab()」函數在 PostgreSQL 中建立交叉表查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!