2014-01-23 2 views
1

큰 Access 팬이 아니지만이 프로젝트에서 Access 데이터베이스를 만들어야합니다. 다른 데이터베이스 유형과 비슷한 것을 만들었으므로 그렇게 어렵지 않았습니다. 나는 그것의 대부분을 알아 냈다. 그러나 달리기 총계는 나의 머리를 짖고있다. 테이블 이름 attendanceViewMS Access 2010 누적 합계 쿼리

검색어 :

나는 아래의 표를 가지고 SELECT * FROM attendanceView

====================================================================================== 
agentID |  incurrredDate  | points | OneFallOff  | TwoFallOff 
====================================================================================== 
chtall  |  10/7/2013  |  2  |  2   |  2 
chtall  |  10/15/2013  |  2  |  2   |  2 
chtall  |  11/26/2013  |  2  |  2   |  2 
chtall  |  12/17/2013  |  2  |  2   |  2 
vimunson |  7/22/2013  |  2  |  2   |  2 
vimunson |  7/29/2013  |  2  |  1   |  1 
vimunson |  12/6/2013  |  1  |  1   |  1 

이 쿼리는 OneFallOffTwoFallOff의 값을 찾기 위해 할 필요가 무엇인지한다. 그러나 각각 agentID에 대해 누적 합계를 TwoFallOff까지 실행하는 방법을 찾아야합니다. 예를 들어 chtall는 네 개의 레코드, 아래 참조,이 같은 것이 보일 것입니다 무엇을 : 나는 작동하지 않았다, 또는 어쩌면 내가 잘못 사용 된 DSUM()을 시도했습니다

================================================================================================== 
agentID |  incurrredDate  | points | OneFallOff  | TwoFallOff  | total 
================================================================================================== 
chtall  |  10/7/2013  |  2  |  2   |  2   | 2 
chtall  |  10/15/2013  |  2  |  2   |  2   | 4 
chtall  |  11/26/2013  |  2  |  2   |  2   | 6 
chtall  |  12/17/2013  |  2  |  2   |  2   | 8 
vimunson |  7/22/2013  |  2  |  2   |  2   | 2 
vimunson |  7/29/2013  |  2  |  1   |  1   | 3 
vimunson |  12/6/2013  |  1  |  1   |  1   | 4 

. 표에서 명확하지 않은 경우 상담원이 변경 될 때 total 열이 다시 0으로 재설정됩니다.

답변

6

상관 부속 조회로 원하는 것을 얻을 수 있습니다.

SELECT 
    a1.agentID, 
    a1.incurrredDate, 
    a1.points, 
    a1.OneFallOff, 
    a1.TwoFallOff 
    (
     SELECT Sum(a2.TwoFallOff) 
     FROM attendanceView AS a2 
     WHERE 
       a2.agentID = a1.agentID 
      AND a2.incurrredDate <= a1.incurrredDate 
    ) AS total 
FROM attendanceView AS a1; 

는 또한 DSum 함께 할 수 있지만, 당신은 DSumWhereCondition 옵션에 agentIDincurrredDate로 구분 기호를 사용해야합니다. 그것은 더 많은 노력처럼 보였고, 서브 쿼리 접근 방식보다 에러가 발생하기 쉽다는 것을 알게되었습니다. "작동하려면 잘못된 인수"나는 액세스 2016에서 코드의 첫 번째 블록을 실행하면

SELECT 
    a.agentID, 
    a.incurrredDate, 
    a.points, 
    a.OneFallOff, 
    a.TwoFallOff, 
    DSum 
     (
      "TwoFallOff", "attendanceView", 
      "agentID = '" & a.agentID & "' " & 
      "AND incurrredDate <= " & 
      Format(a.incurrredDate, "\#yyyy-m-d\#") 
     ) AS total 
FROM attendanceView AS a; 

두 쿼리 나는 다음과 같은 오류가 발생합니다, 액세스 2007

+0

에 샘플 데이터를 사용하여 요청 결과를 반환합니다. 변수 a1은 하위 쿼리 내에서 도달 할 수없는 것 같습니다 (범위가 아님) – Ruut

+0

'FROM attendanceView as a1' 다음에'ORDER BY a1.incurredDate'를 추가하면 문제가 해결됩니다. – Ruut