2013-02-28 120 views
0

给出如下表格。我想移动并将escrow1列中的所有值添加到其对应的uid的balance1中。并且喜欢托管2到balance2。所以在下面的情况。 uid 4的行将有一个1858000 + 42000的余额,行3和uid 3将有余额1 = 1859265 + 30735和escrow1 = 0,并且与uid 2的行将具有余额2 = 940050 + 1050000和escrow2 = 0。其他的是一样的。是否可以在一个查询中做到这一点?我一直在努力,但我不能提出解决方案,所以我可能不得不在一个函数中做,并循环所有的行,但我不想。此外,我知道只有少量的行将托管值不等于0.鉴于此,有没有一种方法来优化查询?如何将一列添加到表中所有行的另一列?

uid | balance1 | escrow1 | balance2 | escrow2 
-----+----------+---------+----------+--------- 
    1 |  5000 |  0 |  0 |  0 
    9 |  5000 |  0 |  0 |  0 
    6 | 1900000 |  0 | 1899960 |  0 
    5 | 1900000 |  0 | 1900000 |  0 
    7 | 1900000 |  0 | 1900000 |  0 
    8 | 1900000 |  0 | 1900000 |  0 
    4 | 1858000 | 42000 | 1900014 |  0 
    2 | 1910000 |  0 | 940050 | 1050000 
    3 | 1859265 | 30735 | 1895050 |  0 

回答

3

如果您只是想从表中选择数据,请使用Greg提供的查询。如果您想更新表格,下面的查询可以提供帮助。

Update TABLENAME 
    Set Balance1 = Balance1 + Escrow1, 
     Balance2 = Balance2 + Escrow2, 
     Escrow1 = 0, Escrow2 = 0 

希望这会有所帮助。

0

我认为这是简单:

SELECT uid 
     ,Balance1 + Escrow1 AS Balance1 
     ,Balance2 + Escrow2 AS Balance2 
FROM TableName 

在optomising而言,我还没有做太多与Postgre,但我怀疑你需要做任何优化(假设你有正确的主键等)

相关问题