2017-01-11 15 views
-3

研究員SOers行,Postgres的:乘表A的列與表B中

目前,我堅持了以下問題。

假設我們有表 「數據」 和表 「因子」

「數據」:

--------------------- 
| col1 | col2  | 
---------------------- 
| foo | 2  | 
| bar | 3  | 
---------------------- 

和表 「因子」(行的量是可變的)

--------------------- 
| name | val  | 
--------------------- 
| f1 | 7  | 
| f2 | 8  | 
| f3 | 9  | 
| ... | ...  | 
--------------------- 

和下面的結果應該看起來像這樣:

--------------------------------- 
| col1 | f1 | f2 | f3 | ...| 
--------------------------------- 
| foo | 14 | 16 | 18 | ...| 
| bar | 21 | 24 | 27 | ...| 
--------------------------------- 

所以基本上我想要列「col2」與表「factor」的「val」的所有內容相乘,並且列「name」的內容應該作爲結果的tableheader/columnname。我們正在使用postgres 9.3(可能升級到更高版本),所以擴展搜索導致了多種可能的解決方案:使用交叉表(雖然即使與交叉表我也無法弄清楚),使用CTE「與「(首選,但也沒有運氣)。也許這也可以通過正確使用array()和unnest()來完成。

因此,任何幫助表示讚賞就如何實現這一目標(代碼越少,越好)提前

TNX!

+2

爲什麼不能做一個交叉連接,讓數據的每個條目可在要素的每一行曾經代表,作爲數據庫的設計? – coreyward

+2

[用PostgreSQL創建數據透視表]的可能的副本(http://stackoverflow.com/questions/20618323/create-a-pivot-table-with-postgresql) – GurV

+0

Tnx的評論。當使用簡單的交叉連接時,我仍然需要轉置結果集,這基本上再次導致「交叉表」(或者我誤解了某些東西)。關於交叉表本身:如前所述,我沒有找到一種方法來動態生成列,即交叉表($ magic)爲(HOW_DO_I_GET_THE_COLS_IN_HERE?) – BePe

回答

相關問題