가장 최근 버전만 가져오고 싶은데 쿼리를 어떻게 작성해야하나요? 0 10 3,201

by DB초보 SQL [2013.08.29 10:21:02]



버전  시작날짜                   종료날짜               상태
1    13/07/13 00:00:00 Y
1    13/07/13 00:00:00 N
1    13/07/13 00:00:00    14/07/23 23:59:59    N
2    13/08/14 00:00:00 Y
3    13/08/16 00:00:00 Y
3    13/08/16 00:00:00 Y
4    13/08/17 00:00:00 Y
4    13/08/17 00:00:00 N
4    13/08/17 00:00:00 Y


MAX(버전) OVER(partition by 버전) 을 사용해서 위 데이터처럼 목록은 만들었는데
여기서 버전이 최대인 값만 추려내는 방법은 없나요?

ps. 이런 경우에는 with 절을 이용해서 쿼리를 작성해야하나요?
by 용근님 [2013.08.29 10:25:51]

MAX(버전) OVER(partition by 버전) 을 사용한 이유를 알수가 없네요. 버전별로 그룹을 묶은상태에서 max(버전)이

의미가 있는 데이터인지.

by 우리집아찌 [2013.08.29 10:31:58]
근데 금주령은 풀리셨나요? ^^

by 용근님 [2013.08.29 10:39:46]
곧이여~ ㅋ 담달중에 한번 뵐까요

by 우리집아찌 [2013.08.29 10:42:52]

9월초에 일정 잡아볼께요.. ㅋㅋ


by 강서꽃미남 [2013.08.29 17:16:51]
올뤠~~~~!!

by 부쉬맨 [2013.08.29 17:34:22]
올뤠
꽃미남님오랜만 ㅋㅋ

by 우리집아찌 [2013.08.29 10:31:30]

원본 데이터와 원하시는 데이터를 올려주세요.

by DB초보 [2013.08.29 11:03:50]
code1 code2     ver   seq   type          date                        date2                  flag
00    0000 1    1    1    13/07/13 00:00:00 Y
00    0000        1    2    2    13/07/13 00:00:00    14/07/23 23:59:59    Y
00    0000 1    3    3    13/07/13 00:00:00 Y
00    0000 2    2    1    13/08/14 00:00:00 Y
00    0000        3    1    1    13/08/16 00:00:00 Y
00    0000 3    2    1    13/08/16 00:00:00 Y
00    0000 4    1    1    13/08/17 00:00:00 X
00    0000        4    2    1    13/08/17 00:00:00 Y
00    0000 4    6    1    13/08/17 00:00:00 Y
00    0000 5    1    1    13/08/26 00:00:00 N
00    0000        5    2    1    13/08/26 00:00:00 N
00    0000        5    6    1    13/08/18 00:00:00 X
03    0001        1    2    3    13/07/25 00:00:00 Y
03    0001        1    3    2    13/07/25 00:00:00    13/08/31 23:59:59    Y
03    0001        1    4    3    13/07/25 00:00:00 Y
04    0001        1    1    1    13/07/25 00:00:00 Y
04    0001        1    2    2    13/07/25 00:00:00    14/07/16 23:59:59    Y
04    0001        1    3    3    13/07/25 00:00:00 X
04    0001        2    1    1    13/08/24 00:00:00 Y
04    0001        2    2    2    13/08/24 00:00:00    14/07/16 23:59:59    X
04    0001        2    3    3    13/08/24 00:00:00 Y
02    0004        1    1    1    13/07/25 00:00:00 Y
02    0004        1    2    2    13/07/25 00:00:00    14/07/16 23:59:59    Y
02    0004        1    3    3    13/07/25 00:00:00 Y
02    0004        1    4    2    13/07/25 00:00:00    13/09/12 23:59:59    Y
01    0011        1    1    1    13/07/25 00:00:00 Y
01    0011        1    2    2    13/07/25 00:00:00    14/07/24 23:59:59    Y
01    0011        1    3    3    13/07/25 00:00:00 Y
01    0011        1    4    1    13/07/25 00:00:00 Y

code1,code2,ver,seq pk입니다.


00 0000 4 2 1 13/08/17 00:00:00 Y
00 0000 4 6 1 13/08/17 00:00:00 Y

by 아린 [2013.08.29 11:35:23]
SELECT *
  FROM (SELECT code1, code2, ver, seq, type, date1, date2, flag
             , RANK() OVER(ORDER BY ver DESC) rn
          FROM t
         WHERE flag = 'Y'
        )
 WHERE rn = 1 

by DB초보 [2013.08.29 12:41:31]
감사합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입