Data 정렬시... 0 5 2,146

by 손님 [SQL Query] 정렬 [2010.11.18 12:03:27]



구분 시작일자 이름   분류 금액 승인번호 종료일
판매 2010-05-13 홍길동  VN   711500    30953122    2010-05-19
판매 2010-09-12 이효리  MU   221900   30992956    2010-09-14
취소 2010-09-19 박문수  MU   191900   30992956    2010-11-16
판매 2010-09-13 엄지영  CA   141300   30999006    2010-09-14
취소 2010-09-14 백설이  CA   141300   30999006    2010-11-16
판매 2010-09-13 사랑이  KE   199900   31012466    2010-09-16
판매 2010-08-26 이순신  KE   627100   31015318    2010-09-02


데이타를 조회시 위와 같이 승인번호를 가지고 정렬을 해서...
동일 승인번호에 대해 데이타가 있으면 그 부분을 함께 보여주고 있는데..

이걸 시작일자로 정렬을 하면서 그 시작일에 해당하는 승인번호에
취소분이 있으면 그걸 바로 그 밑에 보여 주고자 합니다.
예를 들면...현재 승인 번호 30992956 이게 9/13일 이지만 승인번호 정렬을 해서
위에 나타나는데...

판매 2010-05-13 홍길동  VN   711500    30953122    2010-05-19
판매 2010-08-26 이순신  KE   627100   31015318    2010-09-02
판매 2010-09-12 이효리  MU   221900   30992956    2010-09-14
취소 2010-09-19 박문수  MU   191900   30992956    2010-11-16
판매 2010-09-13 엄지영  CA   141300   30999006    2010-09-14
취소 2010-09-14 백설이  CA   141300   30999006    2010-11-16
판매 2010-09-13 사랑이  KE   199900   31012466    2010-09-16

이와 같이 판매에 대해서 시작일자로 정렬을 하고 그부분의 승인일자에 대해서
취소분이 있으면 그내역을 일자와 상관없이 바로 밑에 보여주고자 합니다.

어떤식으로 구현해야 할까요..?




by 마농 [2010.11.18 12:48:56]
ORDER BY MIN(시작일자) OVER(PARTITION BY 승인번호), 시작일자

by 손님 [2010.11.18 13:09:26]
답변 감사합니다.. 하지만 이렇게 정렬을 하면....동일한 일자로 판매분 여러건이 있므면 해당 취소분이 동일 일자가 나오고 그 다음에 나오게 됩니다...전 취소가 있으면 바로 밑에 취소분이 나오도록 구현하고 싶습니다...

by 마농 [2010.11.18 13:36:29]
ORDER BY MIN(시작일자) OVER(PARTITION BY 승인번호), 승인번호, 시작일자

by 전정현 [2010.11.19 10:22:22]
ㅋㅋ 저도 좋은거 배웠습니다. 정렬을 이런식으로 할 수가 있는거군요(PARTITION BY)...
업무에 복잡한 쿼리가 없다보니... 아무튼 감사합니다.
그리고 마지막에 있는 "시작일자"가 "판매"아래에 "취소"가 오게금 하기 위해 필요한 부분이라면,
동일날짜에 판매/취소가 이루어 질 수 있으니
맨뒤의 "시작일자" 대신 "구분 DESC"가 어떨까요?

by 왕초보 [2010.11.19 11:39:43]
약간 수정했어요.
ORDER BY MIN(시작일자) OVER(PARTITION BY 승인번호 order by 시작일자)
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입