选择行作为列

时间:2014-07-03 08:39:59

标签: sql postgresql

我需要一些简单的帮助,我猜,选择查询。我不是SQL专家,所以我甚至不确定如何命名此查询,以及在此类操作中使用了哪些关键字。我们假设我有两个关系表:

table foo:

id | name
---------
1  | foo
2  | oof
3  | ofo
4  | fob
5  | bof


table bar:

id | feature
------------
1  | bar
1  | arb
1  | rab
3  | 333
4  | ddd
4  | eee

期望的结果是:

id | name | feature | feature | feature
----------------------------------------
1  | foo  | bar     | arb     | rab
3  | ofo  | 333     |         |
4  | foo  | ddd     | eee     | 

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您需要安装tablefunc模块。然后你可以编写像

这样的查询
SELECT * 
FROM crosstab('SELECT id, name, feature 
               FROM foo 
               INNER JOIN bar on foo.id = bar.id') 
AS ct(id integer, name text, feature_1 text, feature_2 text, feature_3 text);

其他信息http://www.postgresql.org/docs/9.1/static/tablefunc.html