sql 쿼리 질문 한가지만... 0 3 1,547

by 김태원 [2007.08.08 15:57:58]


Table A, Table B 이렇게 두 테이블이 있습니다.

 

A 에 있는 데이터를 적당히 가공하여 B 로 옮기고 싶은데요.

 

A 에는 날짜항목이 있습니다. 같은 날에 여러 데이터가 있을 수 있고,

 

이건 B 도 마찬가지가 될겁니다.

 

예를 들어 다음과 같은 데이터가 있다고 치면...

 

A

Date          Count     Name

2007-07-01 2            aaa

2007-07-01 5            bbb

2007-07-02 3            ccc

2007-07-02 4            ddd

2007-07-02 1            eee

 

B에는 다음과 같이 같은 날끼리 시퀀스를 주고 싶습니다.

 

B

Date          Count     Name       Seq

2007-07-01 2            aaa           1

2007-07-01 5            bbb           2

2007-07-02 3            ccc           1

2007-07-02 4            ddd           2

2007-07-02 1            eee           3

 

rownum을 사용하여 해보니까... 의외로 쉽게 해결되는듯 했으나,

 

아주 짧은 생각이던군요 ;;

 

A 를 조회해서 B로 Insert 해줄때

 

A 의 조회 조건을 날짜별로 1일 2일 이렇게 하니깐 rownum이 의미가 있는데...

 

하다못해 조건절에 where date between 2007-07-01 and 2007-07-02

 

이렇게만 줘도 Seq 항목이 위에 순차적으로 1, 2, 3, 4, 5가 붙어버리더라는 말이죠...

 

책보면서 이러케 저러케 서브쿼리도 만들어보고 별쌩쑈를 해봐두...

 

제가 아직 Sql 입문한지 얼마 안되어서리... 답을 모르겠네요;;

 

저게 저렇게 되는지 조차 의심스러운 상황;;;

 

어떻게 보면 간단한 팁 정도로 해결될것도 같은데... 혹시 방법 아시는분....

 

가르쳐주시면 많은 도움이 될 것 같습니다 ^^;;

by 마농 [2007.08.08 00:00:00]
ROW_NUMBER() OVER(PARTITION BY 날짜 ORDER BY ROWNUM) AS Seq

by 김태원 [2007.08.08 00:00:00]
이런 ㅠㅠ 감사합니다.;
저렇게 간단하게 해결되는걸 보니 제가 책이나
레퍼런스를 꼼꼼하게 찾아보지 않은듯 하네요 ㅠㅠ;
감사합니다 __)

by 마농 [2007.08.08 00:00:00]
분석함수(Analytic Function)로 찾아보세요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입