2012-10-02 2 views
0

금식 방법 인 것처럼 "로컬 변수 업데이트"메서드를 사용하여 SQL에서 누계 합계를 계산하려고합니다. 추가 레이어를 추가하려면 누적 합계를 그룹화하는 데 관심이 있지만이를 수행하기 위해 내 쿼리를 조정할 위치를 알 수 없습니다 (또는이 메서드로도 가능하다면) . 모든 도움을 주시면 감사하겠습니다."로컬 변수 업데이트"를 사용하여 그룹화 된 실행 합계를 계산하십시오.

다음은 쿼리 작성에 사용 된 코드와 처음부터이 방법으로 나를 인도 한 기사입니다. 나는 코멘트에 링크 나 가지고 올 수

http://geekswithblogs.net/Rhames/archive/2008/10/28/calculating-running-totals-in-sql-server-2005---the-optimal.aspx

DECLARE @SalesTbl TABLE (DayCount smallint, Sales money, RunningTotal money) 

DECLARE @RunningTotal money 

SET @RunningTotal = 0 

INSERT INTO @SalesTbl 
SELECT DayCount, Sales, null 
FROM Sales 
ORDER BY DayCount 

UPDATE @SalesTbl 
SET @RunningTotal = RunningTotal = @RunningTotal + Sales 
FROM @SalesTbl 

SELECT * FROM @SalesTbl 

감사

모든 DAYCOUNT에 대한

라일리

+0

은 (http://stackoverflow.com/questions/10832067/partitioning-results-in-a-running-totals-query) 여기에 귀하의 질문에 대한 답변입니다,하지만 당신은 [이 글을 읽고 고려해야한다 Aaron Bertrand의 블로그 게시물] (http://www.sqlperformance.com/2012/07/t-sql-queries/running-totals). –

+0

@ NikolaMarkovinović는 응답에 많은 감사를드립니다. 내가 링크 한 것에 약간의 변형을 사용했는데, 그것은 훌륭하게 작동합니다. – user1551957

답변

0

을 누적 합계를 재설정하도록 쿼리를 수정하는 방법 올바른 코딩. 다음은 위의 예에서 Day로 그룹화하기 위해 업데이트 기능을 수정해야하는 방법입니다.

UPDATE @salestbl 
SET @RunningTotal = RunningTotal = sales + 
    CASE WHEN [email protected] THEN @RunningTotal ELSE 0 END 
    ,@lastday=daycount 
FROM @salestbl 
관련 문제