2013-02-28 122 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,但我懷疑你需要做任何優化(假設你有正確的主鍵等)

相關問題