2014-03-01 2 views
0

저는 매 회계 연도의 행과 Profit 및 CProfit라는 열이있는 MySQL 테이블을 보유하고 있습니다. 올해의 누적 이익에 올해의 이윤을 적용하여 수년 동안 이익을 축적하고 싶습니다. MySQL의 저장 프로 시저같은 테이블에서 mysql을 업데이트하면 누적 수치가 발생합니다.

내 문은 다음과 같습니다

UPDATE GAME_DETAIL X JOIN GAME_DETAIL Y 
USING (GAME_ID, PLAYER_NO, PRODUCT_NO) 
SET X.CPROFIT=X.PROFIT+Y.CPROFIT 
WHERE X.GAME_ID=ZGAME AND X.YEAR = CY AND X.YEAR=Y.YEAR-1; 

나는 위의 문을 실행할 때 NULL 값을 반환 유지, 즉이 두 수치를 합산 거부합니다.

감사합니다. 감사. 킨

+0

원하는 DDL (및/또는 sqlfiddle)과 원하는 결과 세트를 함께 제공하십시오. 또한, 그것은 개인적인 일이며, USING을 피하십시오 - 혼란스러워집니다! – Strawberry

답변

0

나는 이것이 가장 쉽게 상관 하위 쿼리로 작성 생각 :

update game_detail gd 
    set gd.cprofit = (select sum(profit) 
         from game_detail gd2 
         where gd2.game_id = gd.game_id and 
          gd2.year <= gd.year 
        ); 

update이 원자 작동하기 때문에 작동하지 않는 버전이 그 이유. update은 동시에 모든 행에 적용되므로 "다음"행은 업데이트 될 때 "현재"행의 계산 된 값을 표시하지 않습니다.

관련 문제