Machul_Bom(매출항목중에(Machul_Detail) 묶음상품이 판매된 내역 )
scancode(primaryKey) junno(전표번호) barcode(바코드) iNo(순번) panga1(판매가) childscan(묶음상품판매시 자식상품 scancode 마지막자리)
2017-09-11300042 2017-09-1130004 55555 2 9000.00 ;2;3;4;
Machul_Detail(매출항목 테이블)
scancode(primaryKey) junno(전표번호) barcode(바코드) iNo(순번) panga1(판매가)
2017-09-11300041 2017-09-1130004 08801055020195 1 84000.00 --일반 상품
2017-09-11300042 2017-09-1130004 11111 2 1000.00 --55555 의 대한 구성상품
2017-09-11300043 2017-09-1130004 22222 3 2500.00 --55555 의 대한 구성상품
2017-09-11300044 2017-09-1130004 33333 4 5500.00 --55555 의 대한 구성상품
고객에게 바코드가 08801055020195(단일상품), 55555 (11111, 22222, 33333 묶인 상품)을 판매하였습니다.
저장될때 묶음상품은 Machul_Bom 에 별도로 저장되고 묶음 구성상품은 Machul_Detail 에 저장됩니다.(일반 낱게 상품도 여기에 저장됩니다.)
Machul_Bom 의 childscan 은 55555 묶음상품의 구성상품들이 저장된(Machul_Detail) 레코드 정보입니다.
검색결과을 아래처럼 나타낼려고 Machul_Bom 테이블의 childscan 을 이용해서 쿼리을 하는데 childscan 을 어떻게 구슬려야 할지
알수가 없어서 질문드립니다.
scancode junno barcode iNo panga1
2017-09-11300041 2017-09-1130004 08801055020195 1 84000.00
2017-09-11300042 2017-09-1130004 55555 2 9000.00
두서없는 글이라 양해 바랍니다.
좋은 하루 보내세요.
WITH T1 AS
(
SELECT SCAN_CODE = '2017-09-11300042', CHILD_SCAN = ';2;3;4' UNION ALL
SELECT SCAN_CODE = '2017-09-11300045', CHILD_SCAN = ';5;6;7'
)
SELECT CONVERT(VARCHAR(MAX),T.c.query('text()'))
FROM (
SELECT CHILD_SCAN = CONVERT(XML, (REPLACE(('<R>' + REPLACE((SUBSTRING(CHILD_SCAN, 2, LEN(CHILD_SCAN))), ';', '</R><R>') + '</R>'), '<R>', '<R>' + SUBSTRING(SCAN_CODE, 1, LEN(SCAN_CODE) -1))))
FROM T1
) AS A
CROSS APPLY A.CHILD_SCAN.nodes('/R') AS T(c)
묶음 상품 구매 시 자식 상품과 관련된 데이터를 잘 남기는 방법을 고려해봐야 할 것 같아요.