두개의 테이블( 테이블18, 테이블17)이 동일한 디자인으로 구성되어있으며,
이 두개의 테이블에서 품목코드당 한개 레코드를 추출하되 날짜 desc, 전표번호 desc, 줄번호 desc로 기준으로 추출하면 됩니다.
SELECT seq, 날짜, 전표번호, 줄번호, 거래처코드, 품목코드, 수량
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY 품목코드 ORDER BY 날짜 DESC, 전표번호 DESC, 줄번호 DESC) RNK
FROM (SELECT * FROM 테이블18 UNION ALL SELECT * FROM 테이블17 ) 전표
WHERE 품목코드>0 AND (거래처코드=10)) A
WHERE A.RNK=1
order by 품목코드
위 쿼리를 날렸을때 나오는 결과값 입니다.
seq | 날짜 | 전표번호 | 줄번호 | 거래처코드 | 품목코드 | 수량 |
1365 | 17.01.01 | 1 | 5 | 10 | 10 | 3 |
20 | 18.02.03 | 5 | 3 | 10 | 13 | 5 |
3 | 18.01.19 | 2 | 12 | 10 | 15 | 1 |
4 | 17.12.23 | 1 | 10 | 10 | 16 | 10 |
닷넷에서 oledb로 Jet4.0을 통하여 MDB에서 위 자료를 뽑아야 하는데 partition by order by 가 불가능 한것 같습니다.
쿼리를 만들어 보았는데 두개의 테이블에서 가져와야 하다보니 seq 가 중복될수 있기 때문에 잘못된 쿼리입니다.
SELECT *
FROM (SELECT * FROM 테이블18 UNION ALL SELECT * FROM 테이블17 ) 전표테이블2
WHERE seq IN (SELECT TOP 1 seq
FROM (SELECT * FROM 테이블18 UNION ALL SELECT * FROM 테이블17 ) 전표테이블1
WHERE 전표테이블1.품목코드=전표테이블2.품목코드 AND 품목코드>0 AND 거래처코드=464
ORDER BY 날짜 DESC, 전표번호 DESC, 줄번호 DESC )
ORDER BY 품목코드
ANSI 쿼리로 작성해야 MDB에서 가져올수 있을것으로 예상되는데 감이 안오네요
sqler 여러분께 쿼리 도움 요청 드려요