쿼리 질문이요 ㅜ.ㅜ 0 2 1,575

by sql_master [SQL Query] [2010.02.04 10:55:15]


안녕하세요..  질문드릴게있어요 ㅠ.ㅠ

GROUP_ID  TASK_ID  STATUS
0100     TASK_0100  01
0100   TASK_0101  01
0200   TASK_0201  01
0200   TASK_0202  02
0200   TASK_0203  02
0300   TASK_0301  03
0400   TASK_0401  04
0400   TASK_0502  01

만약 입력값으로 GROUP_ID = 0100, TASK_ID = TASK_0100 의 값이 넘어 왔을때
다음 GROUP_ID가 0200 인것과 다음 TASK_ID 가 TASK_0101인것을 어떻게 쿼리로 가능한지..

참고로. 해당 GROUP에 TASK가 더 들어갈수있습니다. 저 데이터는 고정이 아닙니다.
즉. 0100  TASK_0100
0100  TASK_0101
 0100  TASK_0102
이렇게 3개가 들어가기도 합니다.

예상 결과 )
group_id  task_id   
0200   TASK_0101  
고수님들 부탁드립니다.

by 마농 [2010.02.04 11:16:23]
WITH t AS
(
SELECT '0100' group_id, 'TASK_0100' task_id FROM dual
UNION ALL SELECT '0100', 'TASK_0101' FROM dual
UNION ALL SELECT '0100', 'TASK_0102' FROM dual
UNION ALL SELECT '0200', 'TASK_0201' FROM dual
UNION ALL SELECT '0200', 'TASK_0202' FROM dual
UNION ALL SELECT '0200', 'TASK_0203' FROM dual
UNION ALL SELECT '0300', 'TASK_0301' FROM dual
UNION ALL SELECT '0400', 'TASK_0401' FROM dual
UNION ALL SELECT '0400', 'TASK_0502' FROM dual
)
SELECT MIN(NULLIF(group_id,:v_group_id)) group_id
, MIN(NULLIF(task_id,:v_task_id)) task_id
FROM t
WHERE group_id >= :v_group_id
AND task_id >= :v_task_id
;

by sql_master [2010.02.04 11:21:58]
와우... 대단하세요.. 마농님... 하루 고민했는데.. 아직도 못해결하고 있는데.. ㅠ.ㅠ
새로운 함수가 보이네요 NULLIF() 이것좀 공부해봐야겠네요..

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