두개의 테이블( 테이블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 여러분께 쿼리 도움 요청 드려요