2012-01-19 39 views
0

如果有重复请指向我。我不知道用什么关键字来搜索这种情况。
我有这个表:PostgreSQL将2行连接成1行

name | read | sum1 | sum2 
--------+-------+-------+----- 
A  | 1  | 2.0 | 1.3 
A  | 2  | 0.4 | 4 
B  | 1  | 0.2 | 0.1 
B  | 2  | 1.0 | 3.3 

我想是这样的:

name | r1_sum1 | r1_sum2 | r2_sum1 | r2_sum2 
--------+---------+----------+---------+-------- 
A  | 2.0  | 1.3  | 0.4  | 4 
B  | 0.2  | 0.1  | 1.0  | 3.3 

所以它就像由read分组的行,列name。我如何在psql中执行此操作?

+0

是否'read'可取的值的固定号码,或可能所需的查询可能返回任意多个列? – ruakh

+0

@ruakh在大多数情况下,'读''交替从1到2 – BPm

+1

我不是100%确定你的意思是“在大多数情况下” - 大概你想要一个查询,涵盖*所有*个案? - 但我已经发布了一个基于我最好的猜测你的意思的答案。 – ruakh

回答

1

你可以加入表本身:

SELECT t1.name AS name, 
     t1.sum1 AS r1_sum1, 
     t1.sum2 AS r1_sum2, 
     t2.sum1 AS r2_sum1, 
     t2.sum2 AS r2_sum2 
    FROM insert_table_name_here AS t1 
    FULL 
OUTER 
    JOIN insert_table_name_here AS t2 
    ON t1.name = t2.name 
    AND t1.read = 1 
    AND t2.read = 2 
; 
+0

看起来像它的作品!非常感谢!! – BPm

+0

@BPm:不客气! – ruakh