2012-08-17 3 views
0

는/사람이 ID에 내가 "전체"이외의 다양한 범주에 대해 테이블에 저장된 기록이 이전 기록 - MS 액세스

MSACCESS

에 아래 그림과 기반 나를는 "PREVIOUSVALUE"cloumn을 acheive하는 방법을 알려 경우 도움 감사합니다 이름/사무실/제품/I는 MS 액세스 기능 thorugh 이전 값 열을 acheive 할 범주 조합/효율적인 쿼리를 사전에

ID  Name  Office Product Overall Month   Value Previous 
228  Woodlands london Europe Sales  201106   6 0 
228  Woodlands london Europe Sales  201202   3 6 
228  Woodlands london Europe Sales  201207   4 3 
228  Woodlands london Europe Overall 201106   6 0 
228  Woodlands london Europe Overall 201202   3 6 
228  Woodlands london Europe Overall 201207   4 3 
228  Woodlands london Europe Exetion 201202   6 0 
228  Woodlands london UK  Exetion 201202   6 1 
228  Woodlands london UK  Exetion 201106   1 0 
228  Woodlands london Europe Exetion 201207   6 6 
228  Woodlands london Europe Content 201106   6 0 
228  Woodlands london UK  Content 201106   1 0 
228  Woodlands london Europe Content 201202   3 6 
228  Woodlands london UK  Content 201202   1 1 
228  Woodlands london UK  Content 201207   1 1 
228  Woodlands london Europe Content 201207   4 3 

감사합니다!


쿼리의 결과 - 때문에 내가 추측 TOP1 기능의 예상과 올바른 출력은

ID Name  Office Product Category Date  Month ValuePrevious 
228 Investors london Europe Content 01/06/2011 201106 6 0 
228 Investors london Europe Content 23/02/2012 201202 3 6 
228 Investors london Europe Content 01/07/2012 201207 4 6 

enter image description here

+0

게시하지 마십시오 사진을 기반으로

SELECT tx.id, tx.name, tx.office, tx.product, tx.overall, tx.month, tx.VALUE, tx.previous, Nz((SELECT TOP 1 [value] FROM tablename t WHERE t.id = tx.id AND t.name = tx.name AND t.office = tx.office AND t.product = tx.product AND t.overall = tx.overall AND t.month < tx.month ORDER BY t.month, rnd(t.id) DESC), 0) AS Prev FROM tablename tx ORDER BY tx.month; 

새로운 쿼리. 매우 심하게 형식화 된 데이터조차도 그림보다 낫습니다. 데이터를 게시하고 나는 확실히 대답 할 수 있습니다. – Fionnuala

+0

나는 excel 장 – user1268559

+0

를 올려주기의 선택권을 볼 수 없었다 당신의 꼬리표는 MS Access를 말한다. 테이블을 열고 게시물에 몇 줄을 잘라 붙여 넣습니다. 최악의 경우 최악의 경우 입력하십시오. – Fionnuala

답변

0

당신은 하위 쿼리를 사용할 수 있습니다 아래 이미지에 표시됩니다으로 이전 값을 얻으려면. 변경, 매우 스파 스, 샘플 데이터

SELECT tz.id, 
     tz.name, 
     tz.office, 
     tz.product, 
     tz.date, 
     tz.month, 
     tz.VALUE, 
     Nz((SELECT TOP 1 [value] 
      FROM tablename t 
      WHERE t.id = tz.id 
        AND t.name = tz.name 
        AND t.office = tz.office 
        AND t.product = tz.product 
        AND t.date < tz.date 
      ORDER BY t.date DESC), 0) AS Prev 
FROM tablename tz 
ORDER BY tz.date; 
+0

에 대한 기본 정보로 사용할 수 있습니다. 안녕하세요 Remou 님의 빠른 도움에 감사드립니다.하지만 "이 레코드로 최대 하나의 레코드가 반환 될 수 있습니다"라는 오류가 발생했습니다. 원래 원본에 쿼리를 붙여 넣었습니다 게시물. 실제로 쿼리는 400-500 레코드를 제공하지만 이후에이 오류가 발생합니다. – user1268559

+0

이 경우 가능한 중복 레코드가 더 많을 수 있습니다. 테이블에 고유 한 ID가 있습니까? – Fionnuala

+0

고유 ID가 없습니다 ... 셰어 포인트는 테이블을 유지 관리합니다 ... 어떻게 든 중복되는 디버깅을 할 수 있습니까? – user1268559