2012-08-10 1 views
1

나는이 문제에 대해 언젠가는 견디지 못했지만 도움을 구하고 있습니다.기존 표의 파생/계산 열

Account - Date - Amount - Summary 
10000 - 2010-1-1 - 50.00 - 0.00 
10000 - 2010-2-1 - 50.00 - 0.00 
10000 - 2010-3-1 - 50.00 - 0.00 
10000 - 2010-4-1 - 50.00 - 0.00 
10000 - 2010-5-1 - 50.00 - 0.00 
10000 - 2010-6-1 - 50.00 - 0.00 
10000 - 2010-7-1 - 50.00 - 0.00 
10000 - 2010-8-1 - 50.00 - 0.00 
10000 - 2010-9-1 - 50.00 - 0.00 
10000 - 2010-10-1 - 50.00 - 0.00 
10000 - 2010-11-1 - 50.00 - 0.00 
10000 - 2010-12-1 - 50.00 - 600.00 
10000 - 2011-1-1 - 25.00 - 0.00 
10000 - 2011-2-1 - 25.00 - 0.00 
10000 - 2011-3-1 - 50.00 - 0.00 
10000 - 2011-4-1 - 50.00 - 0.00 
10000 - 2011-5-1 - 50.00 - 0.00 
10000 - 2011-12-1 - 25.00 - 825.00 
10000 - 2012-1-1 - 100.00 - 0.00 
10000 - 2012-2-1 - 200.00 - 0.00 
10000 - 2012-3-1 - 100.00 - 0.00 
10000 - 2012-5-1 - 100.00 - 0.00 
10000 - 2012-6-1 - 100.00 - 0.00 
10000 - 2012-8-1 - 100.00 - 0.00 
10000 - 2012-12-1 - 100.00 - 1625.00 
10001 - 2010-1-1 - 50.00 - 0.00 
10001 - 2010-2-1 - 60.00 - 0.00 
10001 - 2010-12-1 - 60.00 - 170.00 
10001 - 2011-1-1 - 50.00 - 0.00 
10001 - 2011-2-1 - 50.00 - 0.00 
10001 - 2011-3-1 - 50.00 - 0.00 
10001 - 2011-4-1 - 50.00 - 0.00 
10001 - 2011-6-1 - 50.00 - 0.00 
10001 - 2011-8-1 - 50.00 - 0.00 
10001 - 2011-10-1 - 50.00 - 0.00 
10001 - 2011-12-1 - 50.00 - 570.00 

이 테이블의 기본 스냅 샷 : 다음과 같이

나는, 값을 SQL Server 테이블이있다. '요약'열은 MONTH (날짜) = '12'인 경우에만 '날짜'열을 기준으로 한 연말의 '금액'합계를 제공합니다. 약 4 년 더 걸리는 수백 가지 계정에 대해 이렇게 진행됩니다. "SummaryPreviousYear"라는 기존 테이블에 열을 추가하고 싶습니다. SummaryPreviousYear 열은 MONTH (Date) = '12'및 이전 해의 금액 합계가 있어야합니다. 이 열을 계좌 번호에 입력하여 요약 열 옆에 표시하고 요약 값처럼 값을 제공하지만 SummaryPreviousYear 값은 열 아래로 전체적으로 표시되어야합니다. 달은 예를 들어 12 단지 경우, 다음 행 :

전 :

Account - Date - Amount - Summary 
10001 - 2011-10-1 - 50.00 - 0.00 
10001 - 2011-12-1 - 50.00 - 570.00 

후에는 :

Account - Date - Amount - Summary - SummaryPreviousYear 
10001 - 2011-10-1 - 50.00 - 0.00 - 170.00 
10001 - 2011-12-1 - 50.00 - 570.00 - 170.00 

는 사람이 좀 도와 줄래? 여기에 2 일 동안 머리를 뽑아 내고이 데이터 세트를 만들어 보고서 개발을 진행할 수 있도록해야합니다. 불행히도, DBA는 오프 사이트에 있습니다. 말 그대로 내 지혜 끝에. 어떤 도움이라도 대단히 감사하겠습니다.

+0

다시 같은 질문을하지 마십시오 같지 않은 어떤 달 동안 0을 반환하지 대신. 감사. – Kev

답변

0
SELECT l.*, 
      q.summary AS SummaryPreviousYear 
FROM  lists l 
LEFT JOIN 
    (
      SELECT Date, 
        Summary 
      FROM  lists 
      WHERE  MONTH(Date) = 12 
    ) AS q 
      ON YEAR(l.Date) = YEAR(q.Date) + 1 
1

왜 데이터베이스의 각 행에 대한 요약 및 전년도 요약 데이터를 복제하고 있습니까? 이것은 낭비적이고 불필요합니다. 전년도 요약이있는 다른 테이블 (연간 1 행)을 가지고이 테이블에 가입 할 수있는 것이 훨씬 낫습니다. 요약 열에 대한 필요성은 전혀 없습니다. 왜 원본을 향상 월 12 일 때, 요약을 계산하는 뷰를 작성하고 12

+0

SSRS에 대한 데이터 세트로 사용하기 위해 하나의 테이블/뷰에 그룹화 된 모든 데이터를 필요로하므로이 작업을 수행하고 싶습니다. 이러한 요약 테이블을 얻으려면 코드에 대한 도움이 필요했습니다. – dp3

0
SELECT 
    t.Account, 
    t.Date, 
    t.Amount, 
    t.Summary, 
    s.Summary as SummaryPreviousYear 
FROM TestTable t  
JOIN (
    SELECT 
     Account, 
     DATEPART(YEAR, Date) as Year, 
     SUM(Amount) as Summary 
    FROM TestTable 
    GROUP BY Account, DATEPART(YEAR, Date) 
) s 
    ON s.Account = t.Account 
    AND s.Year = DATEPART(YEAR, Date) - 1