Postgresql

將列中的分類值轉換為列本身(轉置)

  • August 17, 2022

專家們,

我有這個數據 -

ID       |  buckets      | SUM (USD)|
--------- --------------- ---------
1        | 10 - 20       | 500      |
--------- --------------- ---------
1        | 30 - 40       | 100      |
--------- --------------- ---------
2        | 30 - 40       | 300      |
--------- --------------- ---------

現在,當在 Excel 中如此簡單時,我正在嘗試並未能在 PSQL 中獲得輸出->

ID       |. 10-20        | 30-40    | Total_USD |
--------- --------------- ---------  -----------
1        |   500         |  100     |    600    |
--------- --------------- ---------  -----------
2        |               |  300     |    300    | 
--------- --------------- ---------  -----------

如果您能指導我/給我正確的方向,將不勝感激

可以使用過濾聚合完成數據透視(或交叉表):

select id, 
      sum("sum") filter (where buckets = '10 - 20') as "10 - 20",
      sum("sum") filter (where buckets = '30 - 40') as "30 - 40",
      sum("sum") as total
from the_table
group by id
order by id;       

但總的來說,SQL 並不是為這種類型的報告而設計的。在 Excel(或任何其他報告軟體)中執行此操作是一個更好的解決方案。

引用自:https://dba.stackexchange.com/questions/315748