postgres:将表A的列与表B

时间:2017-01-11 17:26:37

标签: sql postgresql pivot crosstab

SOERS,

目前我遇到了以下问题。

假设我们有表格"数据"和表"因素"

"数据":

---------------------
|  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"乘以" val"的所有内容表"因素"列的内容"名称"应该作为结果的tableheader / columnname。

我们正在使用postgres 9.3(可能升级到更高版本),因此扩展搜索产生了多种可能的解决方案:使用交叉表(尽管即使使用交叉表我也无法解决这个问题),使用CTE&# 34;与" (首选,但也没有运气)。也许这也可以通过正确使用array()和unnest()来完成。

因此,对于如何实现这一点(代码越少越好)的任何帮助都是值得赞赏的

提前Tnx!

1 个答案:

答案 0 :(得分:0)

这个包似乎可以做你想要的: https://github.com/hnsl/colpivot