user order date
사용자 1 1 2014-11-12
사용자 2 2 2014-11-13
사용자 3 3 2014-11-14
사용자 4 4 2014-11-15
사용자 5 4 null
사용자 6 5 null
사용자 7 6 null
현재 위와 같은 테이블입니다.
현재 아래와 같은 쿼리로
select min(order) from table1 where date is null
order값을 가져오는데요
현재 문제는
order값이 3까지는 4값을 잘 가져오는데요
order값이 4일경우 위와같이 2개가 존재하는데요
date값이 하나는 존재하고 하나는 null입니다.
다음 order값 5를 가져오는 조건은
order값이 4인 date값이 하나라도 존재할경우 입니다.
select min(order) from table1 where date is null
이렇게 하면 order값 4를 가져오는데
order값 5를 가져올려면 어떤방법으로 쿼리를 바꿔야될지 막막하네요.
좋은 저녁시간 보내세요.
혹시 date값이 null값만 있는 order 중에 제일 작은 값인가요?
WITH t AS (SELECT '사용자1' usr, 1 ord, '2014-11-12' dt FROM DUAL UNION ALL SELECT '사용자2' usr, 2 ord, '2014-11-12' dt FROM DUAL UNION ALL SELECT '사용자3' usr, 3 ord, '2014-11-12' dt FROM DUAL UNION ALL SELECT '사용자4' usr, 4 ord, '2014-11-12' dt FROM DUAL UNION ALL SELECT '사용자5' usr, 4 ord, NULL dt FROM DUAL UNION ALL SELECT '사용자6' usr, 5 ord, NULL dt FROM DUAL UNION ALL SELECT '사용자7' usr, 6 ord, NULL dt FROM DUAL) SELECT MIN (ord) ord FROM (SELECT ord FROM t GROUP BY ord HAVING SUM (DECODE (dt, NULL, 1, 0)) = COUNT (1))