使用来自相同列的值之和更新多个列中的一些值

时间:2014-05-15 01:37:34

标签: sql postgresql

例如,有一个表T

col1 col2 col3 col4 col5 col6
a    x    y    z    s0   s2
b    x    y    z    s1   s3
c    x    y    z    s4   s5
a    x1   y1   z1   s6   s7
b    x1   y1   z1   s8   s9
c    x1   y1   z1   s8   s9
更新后,它应该看起来像

col1 col2 col3 col4 col5  col6
a    x    y    z    s0    s2
b    x    y    z    s1    s3
c    x    y    z    s0+s1 s2+s3
a    x1   y1   z1   s6    s7
b    x1   y1   z1   s8    s9
c    x1   y1   z1   s8+s6 s9+s7

1 个答案:

答案 0 :(得分:1)

对于用于转换的规则,您有点模糊。以下可能会做你想要的:

update t
   set col5 = (select sum(col5) from t2 where t2.col2 = t.col2 and t2.col1 in ('A', 'B')),
       col6 = (select sum(col6) from t2 where t2.col2 = t.col2 and t2.col1 in ('A', 'B'))
   where col1 = 'C';