order_no circuit_no drum_no job_date
A01 CA-00001 1000-0000 2015-05-01
A01 CA-00003 1000-0002 2015-05-01
A01 CA-00004 결품 2015-05-01
A01 CA-00002 결품 2015-05-01
A02 CA-00002 2000-0001 2015-05-03
A02 CA-00004 결품 2015-05-03
위의 자료가 있다고 가정할때
고수님의 자문을 구합니다.
2015-05-01에 A01 오더를 내리고 (CA-00004, CA-00002 결품이 2건 있습니다.)
이후(2015-01-03)에
A01 오더의 결품을 대상으로 A02라는 오더를 내렸다면(CA-00002 결품 채우고)
다음과 같은 결과 값이 나와야 합니다.
order_no circuit_no drum_no job_date
A01 CA-00001 1000-0000 2015-05-01
A01 CA-00003 1000-0002 2015-05-01
A02 CA-00002 2000-0001 2015-05-03
A01 CA-00004 결품 2015-05-03
혹은
order_no circuit_no drum_no job_date
A01 CA-00001 1000-0000 2015-05-01
A01 CA-00003 1000-0002 2015-05-01
A02 CA-00002 2000-0001 2015-05-03
A02 CA-00004 결품 2015-05-03
로직을 잘 몰라서 order_no에 의미를 잘 모르겠습니다... 단지 날짜가 넘어가면 그냥 +1인건지....
도움이 될지 모르겠지만.....
with test (order_no, circuit_no, drum_no, job_date) as
(
select 'a01', 'ca-00001', '1000-0000', '2015-05-01' union all
select 'a01', 'ca-00003', '1000-0002', '2015-05-01' union all
select 'a01', 'ca-00004', '결품', '2015-05-01' union all
select 'a01', 'ca-00002', '결품', '2015-05-01' union all
select 'a02', 'ca-00002', '2000-0001', '2015-05-03' union all
select 'a02', 'ca-00004', '결품', '2015-05-03'
)
select z.order_no, z.circuit_no, z.drum_no, z.job_date
from (
select ROW_NUMBER() OVER(PARTITION BY circuit_no ORDER BY job_date DESC) AS num
, order_no, circuit_no, drum_no, job_date
from test
) as z
where z.num = 1