|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 액세스 버전(95,97,2000,xp,2003,2007):
* 아래줄에 질문을 작성하세요 >>
<InsTbl>
C_No Ins_Name
1 aa
2 bb
<RecTbl>
C_No Dates Remarks
1 2020-01-01 입고
1 2020-02-01 수리
2 2020-03-01 입고
1 2020-03-01 수리
1 2020-04-01 수리
2 2020-04-01 수리
SELECT
InsTbl.C_No
InsTbl.Ins_Name
MAX(IFF(RecTbl.Remarks = '수리', RecTbl.Dates)) AS 최근수리
FROM
InsTbl LEFT JOIN RecTbl ON InsTbl.C_No = RecTbl.C_No
GROUP BY
InsTbl.C_No,
InsTbl.Ins_Name
;
장비목록과 이력을 따로 관리하여, 위와 같이 가장 최근 수리내역을 관리하며
상용하고있습니다.
'수리' 내역의 두번째 큰 값을 불러오고 싶은데
고수분들의 조언 부탁 드립니다.
==============[오범석님 글에 대한 답변입니다]==============
상위값 2개를 구한 결과에
정렬기준의 최소값 또는
다시역순으로 정렬하여 제일 상위값
을 취하면 2번째 값이 됩니다.
SELECT TOP 1 T.Dates, T.C_No, T.Ins_Name
FROM (SELECT TOP 2 RecTbl.Dates, RecTbl.C_No, InsTbl.Ins_Name
FROM RecTbl LEFT JOIN InsTbl ON RecTbl.C_No = InsTbl.C_No
WHERE (((RecTbl.Remarks)="수리"))
ORDER BY RecTbl.Dates DESC , RecTbl.C_No DESC) AS T
ORDER BY T.Dates, T.C_No;
|
|