안녕하세요
커서 안돌리고 가능할지 싶어서 문의드립니다.
주문서와 주문서 상세 테이블인데요
T_ORDER 주문테이블
[ORDER_ID] 주문번호 CHAR(20)
[CNT] 주문제품수량 INT
[ORDER_NAME] 주문자성함 VARCHAR(50)
T_ORDER_PRODUCT
[SEQ_ID] PK BIGINT
[ORDER_ID] 주문번호 CHAR(20)
[PRODUCT_CODE] VACHAR(10)
T_ORDER_PRODUCT 에는 수량컬럼은 없고
같은 제품 여러개를 구매하면 구매한 수량만큼 입력되는 형태입니다.
ORDER_ID CNT ORDER_NAME
1 1 김갑돌
2 2 김갑수
3 2 김을수
T_ORDER_PRODUCT
SEQ_ID ORDER_ID PRODUCT_CODE
1 1 A1000
2 2 A2000
3 2 A2000(K)
4 3 A30000(K)
5 3 A30000(K)
이런식으로 데이터가 들어가있다면 (K)를 들어간 제품의 주문서를 따로 나누고 싶어서요
결과를 예상하면
ORDER_ID CNT ORDER_NAME
1 1 김갑돌
2 1 김갑수
2_(K) 1 김갑수
3_(K) 2 김을수
T_ORDER_PRODUCT
SEQ_ID ORDER_ID PRODUCT_CODE
1 1 A1000
2 2 A2000
3 2_(K) A2000(K)
4 3_(K) A30000(K)
5 3_(K) A30000(K)
커서를 사용해서 루프돌려야하는건가요?
참고로 SEQ_ID는 변해도 상관은 없습니다.
도움좀 부탁드립니다.
Comment 2
-
건우아빠
2017.02.20 18:27
with T_ORDER_PRODUCTas(select 1 SEQ_ID, '1' ORDER_ID, 'A1000' PRODUCT_CODE union allselect 2 , '2' , 'A2000' union allselect 3 , '2' , 'A2000(K)' union allselect 4 , '3' , 'A30000(K)' union allselect 5 , '3' , 'A30000(K)' ) ,result as(select * , CHARINDEX('(K)',PRODUCT_CODE,1) chk, case when CHARINDEX('(K)',PRODUCT_CODE,1) > 0 then ORDER_ID+'_(K)' else ORDER_ID end NEW_ORDER_IDfrom T_ORDER_PRODUCT)select NEW_ORDER_ID ,COUNT(*) cnt , ORDER_IDfrom resultgroup by NEW_ORDER_ID , ORDER_ID -
파워유저
2017.02.21 17:42
건우아빠님 정말 감사합니다. ㅠㅠ