다음값 가져오기 0 3 1,438

by stylebox [SQL Query] [2015.01.13 16:19:56]


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를 가져올려면 어떤방법으로 쿼리를 바꿔야될지 막막하네요.

좋은 저녁시간 보내세요.

 

by 신이만든짝퉁 [2015.01.13 16:41:26]
SELECT MAX(ORDER) + 1
  FROM TABLE1
 WHERE DATE IS NOT NULL;

무슨 말인지 도통 이해가 잘 안가지만 이걸 말씀하시는 건지?


by jkson [2015.01.13 16:44:47]

혹시 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)) 

 


by 마농 [2015.01.13 16:51:11]
SELECT MIN(MIN(ord)) min_ord
  FROM table1
 GROUP BY ord
HAVING MIN(dt) IS NULL
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입