簡體   English   中英

PostgreSQL 9.6交叉表,創建數據透視

[英]PostgreSQL 9.6 crosstab, create pivot

在PostgreSQL 9.6中,如何從表格中的“導入”表中的鏈接下面...

“導入”表的結構

創建一個查詢/函數,然后將其轉置為以下內容:

預期視圖的結構

不幸的是,表“導入”沒有ID字段。 我嘗試將交叉表與tablefunc一起使用,但沒有效果。

您正在尋找交叉表或樞軸的對立面:您正在尋找非樞軸

在標准SQL中,您可以使用UNION ALL來執行此操作(除非DBMS支持Postgres不支持的unpivot運算符):

select dlimportdate, 1 as colno, col1 as value
from the_table
union all
select dlimportdate, 2, col1
from the_table
union all
...

但是在Postgres中,有一種更短的方法可以做到這一點。 創建一個由列組成的數組,然后使用unnest將它們變成行:

select dlimportdate, t.colno, t.value
from the_table
  cross join unnest(array[col1, col2, col3, ...]) with ordinality as t(value, colno);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM