PostgreSQL 跨表查詢詳解:使用tablefunc擴展創建透視表
本文將詳細介紹如何在PostgreSQL中使用tablefunc
擴展創建跨表查詢(Crosstab Queries),實現數據的透視表轉換。
創建跨表查詢
跨表查詢能夠將數據轉換為表格格式,其中行代表類別,列代表值。 PostgreSQL 通過tablefunc
擴展實現此功能。
雙參數跨表查詢語法:
<code class="language-sql">SELECT * FROM crosstab( 'SELECT row_name, category, value FROM base_table ORDER BY 1, 2', 'SELECT DISTINCT attribute FROM base_table ORDER BY 1', ) AS ct (row_name text, column_1 type_1, ..., column_n type_n);</code>
處理缺失屬性:
如果基礎表中存在缺失屬性,可以使用第二個參數指定跨表中要包含哪些屬性。缺失屬性的值將為空。
處理多餘輸入行:
高級跨表查詢:
ORDER BY
子句。 CASE
和GROUP BY
語句。 在psql中使用 crosstabview
(PostgreSQL 9.6及以上版本):
在psql中使用crosstabview
元命令執行跨表查詢:
<code class="language-sql">\crosstabview</code>
示例查詢:
考慮以下示例表:
<code class="language-sql">Section Status Count A Active 1 A Inactive 2 B Active 4 B Inactive 5</code>
要創建一個以Section為行,Status為列的跨表:
<code class="language-sql">SELECT * FROM crosstab( 'SELECT section, status, COUNT(*) FROM tbl GROUP BY 1, 2', 'SELECT DISTINCT status FROM tbl ORDER BY 1', ) AS ct (Section text, Active int, Inactive int);</code>
結果:
<code>Section Active Inactive A 1 2 B 4 5</code>
以上是如何使用TableFunc擴展名在PostgreSQL中創建Crosstab查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!