2013-02-28 3 views
0

아래 표와 같습니다. 나는 escroll1 열의 모든 값을 해당 uid의 balance1로 이동하고 추가하려고합니다. 그리고 에스크로 2가 균형을 이루는 걸 좋아해. 그래서 아래의 경우. uid 4 행은 1858000 + 42000의 균형을 가지며, uid 3 행은 balance1 = 1859265 + 30735 및 escrow1 = 0을 가지며 uid 2 행은 balance2 = 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

이 나는대로 간단하게 생각 :

optomising의 측면에서
SELECT uid 
     ,Balance1 + Escrow1 AS Balance1 
     ,Balance2 + Escrow2 AS Balance2 
FROM TableName 

, 내가 Postgre와 함께 많은 일을하지 않은,하지만 난 당신이 어떤 최적화 (당신이 가정을 할 필요가 거라고 의심 올바른 기본 키 등)

관련 문제