2014-04-24 2 views
0

지불금 반복 계산을 시도 중입니다. 샘플 데이터는 아래를 참조하십시오. 이것은 내가 가지고있는 것입니다 :이 사람은 이미 각 3 부금 (1 부금 = 1 기록)을 지불 받았습니다. SumOfPayouts (그/그녀가 지급해야 시간의 총 수를) 사용액세스 중 ROW_NUMBER()

+-----+----------+--------------+--------------+--------------+------------+--------+ 
|PytID| PytGross| PayoutUnits | SumOfPayouts | PaidOut | PayoutYear | EmpID | 
+-----+----------+--------------+--------------+--------------+------------+--------+ 
| 1 | $11,000 |  6.6667 |  3  |  3  | 2008  | 100 | 
+-----+----------+--------------+--------------+--------------+------------+--------+ 
| 1 | $11,000 |  6.6667 |  3  |  3  | 2009  | 100 | 
+-----+----------+--------------+--------------+--------------+------------+--------+ 
| 1 | $11,000 |  6.6666 |  3  |  3  | 2010  | 100 | 
+-----+----------+--------------+--------------+--------------+------------+--------+ 

, 나는 지불금의 반복을 찾기 위해 노력하고있다. 연간 1 개의 지불금이 있습니다. 이것은 내가 얻으려고 노력하고있는 것이다 (나는 EmpID b/c 간격을 포함하지 않았다).

+-----+----------+--------------+--------------+--------------+------------+----------+ 
|PytID| PytGross| PayoutUnits | SumOfPayouts | PaidOut | PayoutYear |Iteration | 
+-----+----------+--------------+--------------+--------------+------------+----------+ 
| 1 | $11,000 |  6.6667 |  3  |  3  | 2008  | 1  | 
+-----+----------+--------------+--------------+--------------+------------+----------+ 
| 1 | $11,000 |  6.6667 |  3  |  3  | 2009  | 2  | 
+-----+----------+--------------+--------------+--------------+------------+----------+ 
| 1 | $11,000 |  6.6666 |  3  |  3  | 2010  | 3  | 
+-----+----------+--------------+--------------+--------------+------------+----------+ 

참고 : ID 필드는 전체적으로 각 판매 대금에 고유합니다. 그것이 의미하는 것은 => 사람이 3 번 지불금을 받기로 선택한 경우,이 샘플 데이터의 경우, Employee 100은 3 회에 걸쳐 20 개의 단위를받는 것으로 선택했습니다. 이 3 개의 레코드에는 공통적으로 두 가지가 있으며 EmployeeIDPytID입니다.

내가 ROW_NUMBER() 어떤 종류의를 유지하기 위해 PayoutYear를 사용해야처럼 보인다하지만 난 액세스 을 사용하고 있기 때문에이 옵션 없습니다. 누구든지이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

추가 정보 : SQL에서 매우 혼란 스럽습니다. 이것은 내가 가져 오는 쿼리에서 데이터가 어떻게 보이는지입니다.

AwardDate PytGross PytUnits Remaining PaidOut Sum EmployeeID MCR_PytYear 
12/26/2000 $11,500.06 6.67   0   3  3 100200  2008 
12/26/2000 $11,500.06 6.67   0   3  3 100200  2009 

답변

3
SELECT T1.EmployeeID, T1.PayoutYear, 
    (SELECT COUNT (*) FROM Table1 AS T2 
    WHERE (T1.PayoutYear >T2.PayoutYear OR T1.PayoutYear=T2.PayoutYear) 
    AND T1.EmployeeID=T2.EmployeeID) AS Iteration 
FROM Table1 AS T1; 

결과 :

EmployeeID PayoutYear  Iteration 
100200  2008    3 
100200  2009    6 
100200  2010    12 

이 내 샘플 테이블 :

EmployeeID PayoutYear 
100   2008 
100   2009 
100   2010 
200   2008 
200   2009 

내 쿼리 결과 :

EmployeeID PayoutYear Iteration 
100   2008   1 
100   2009   2 
100   2010   3 
200   2009   1 
200   2010   2 

쿼리에서 SQL 뷰로 가서 사용중인 Select 문과 테이블의 몇 줄을 표시 할 수 있습니까?

업데이트 :

SELECT T1.EmployeeID, T1.PayoutYear, 
    (SELECT COUNT (*) FROM Table1 AS T2 
    WHERE (T1.PayoutYear >T2.PayoutYear OR T1.PayoutYear=T2.PayoutYear) 
    AND T1.EmployeeID=T2.EmployeeID 
    AND T1.PayoutID=T2.PayoutID) AS Iteration 
FROM Table1 AS T1; 

그것은 작동 : 우리는 사소한 세부 사항이 누락 된! 감사.

+0

답변을 주셔서 감사합니다. @ 윌리엄 스미스. 감사합니다. 이상한 결과가 나타났습니다. 내가 보여줄 답변을 편집 할게. –

+0

예. 나는 영업을 갱신 할 것이다. 지속적인 노력에 감사드립니다. –

+0

당신은 그것을 가지고 기쁘고 upvote 주셔서 감사합니다. 당연히 일부 행운의 직원은 하나 이상의 지불금 ID를 가졌습니다. –