조건별 중복제거 0 2 1,245

by 조새롬 [2014.01.23 14:20:28]


 SELECT ID_PC, VISIT_TIME, TO_CHAR ( a.visit_time, 'HH24' ) AS DATE_CHAR FROM ci_visitor_info a
						 WHERE a.visit_time BETWEEN TO_DATE ( '2014/01/20' , 'YYYY/MM/DD' )
						 AND TO_DATE ( '2014/01/20' , 'YYYY/MM/DD' ) + 0.99999
						 AND a.id_site = 1
 GROUP BY TO_CHAR ( a.visit_time, 'HH24' ),ID_PC,VISIT_TIME


를 실행시키면
ID_PC | VISIT_TIME |  DATE_CHAR
1 | 14/01/20 15:29:59.175000000 15
2 | 14/01/20 16:33:34.260000000 16
3 | 14/01/20 09:39:39.398000000 09
2  | 14/01/20 16:31:35.067000000 16

2 | 14/01/21 17:22:48.860000000 17
3 | 14/01/21 10:18:23.439000000 10
3 | 14/01/21 10:30:23.439000000 10

3 | 14/01/22 10:18:23.439000000 10

이라는 결과값이 나옵니다

(
**참고 )
날짜별로 색상 다르게 표시하여 구분하기 쉽도록 하였습니다.
ID_PC = 1,2,3....
VISIT_TIME = 14/01/20 15:29:59.175000000 , 14/01/20 15:29:59.175000000 ....
)


제가 원하는 결과값은
날짜별로 ID_PC값의 중복을 제거하고 중복이라면 빠른 날짜를 출력하고 싶습니다

::원하는 결과값

ID_PC | VISIT_TIME |  DATE_CHAR
1 | 14/01/20 15:29:59.175000000 15
2 | 14/01/20 16:33:34.260000000 16
3 | 14/01/20 09:39:39.398000000 09
2  | 14/01/20 16:31:35.067000000 16
2 | 14/01/21 17:22:48.860000000 17
3 | 14/01/21 10:18:23.439000000 10
3 | 14/01/21 10:30:23.439000000 10

3 | 14/01/22 10:18:23.439000000 10

빨간색으로 선이 그어진 부분은 중복이므로 제거되어서 출력되고 싶다는 말입니다.
날짜별로 말이죠~

도와주세요
by 마농 [2014.01.23 16:06:12]
SELECT id_pc
     , MIN(visit_time) AS visit_time
     , TO_CHAR(MIN(visit_time), 'hh24') AS date_char
  FROM ci_visitor_info
 WHERE visit_time >= TO_DATE('2014/01/20', 'yyyy/mm/dd')
   AND visit_time < TO_DATE('2014/01/20', 'yyyy/mm/dd') + 1
   AND id_site = 1
 GROUP BY TRUNC(visit_time), id_pc
 ORDER BY TRUNC(visit_time), id_pc
;

by 조새롬 [2014.01.23 16:30:20]

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