Mysql 환경에서 제가 작성한 쿼리는 아래와 같습니다.
그런데, 여기서 해당 쿼리를 그대로 실행하면 문제없이 실행되지만
이걸 WITH으로 묶어 가상테이블로 만들어 select로 호출하면 아래와 같은 오류문이 뜹니다.
Preset 환경에서 쿼리를 작성하고 차트를 만들고 있는데,
제가 작성한 아래의 쿼리를 가지고 차트를 만들려면 WIth문으로 묶여야 해서 이 문제는 반드시 해결되어야 합니다...
혹시 이유가 무엇이고 어떻게 해결하는지 도움을 받을 수 있을까요?
1. 쿼리문
SELECT
CONCAT('b',bsod_ix) as "주문상세번호",
CONCAT('b',bso_ix) as "주문번호",
CASE WHEN bso_ix is not NULL THEN "직영점" END as "판매채널",
CASE
WHEN
REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(v_t.pid,',',numbers.n),',',-1),'"',''),'[',''),']',''),'*','') in
(0000010699,0000010698,0000010697,0000010696,0000010695,0000010694,0000010693,0000010667,0000010662)
THEN "이유식"
ELSE "간식"
END as "상품 카테고리",
CASE WHEN bso_ix is not NULL THEN "단품" END as "상품 유형",
CASE WHEN bso_ix is not NULL THEN "구매확정(직영점)" END as "주문상태",
REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(v_t.pname,',',numbers.n),',',-1),'"',''),'[',''),']',''),'*','')
as "상품명",
CASE WHEN bso_ix is not NULL THEN "해당없음(직영점단품)" END as "옵션명",
REPLACE(REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(v_t.tot_price, ',', n), ',', -1),'[',''),']','') as "상품판매가격 (배송비 제외)",
CASE WHEN bso_ix is not NULL THEN 0 END as "주문별 배송비",
CASE WHEN bso_ix is not NULL THEN 0 END as "쿠폰 할인",
CASE WHEN bso_ix is not NULL THEN 0 END as "적립금 사용",
CASE WHEN bso_ix is not NULL THEN 0 END as "에치금 사용",
CASE WHEN bso_ix is not NULL THEN 0 END as "총 할인금액",
REPLACE(REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(v_t.tot_price, ',', n), ',', -1),'[',''),']','') as "실결제금액 (배송비 제외)",
regdate as "주문일",
regdate as "입금일"
FROM
(
SELECT
bsod_ix,
bso_ix,
JSON_EXTRACT(detail, '$[*].pname') as pname,
JSON_EXTRACT(detail, '$[*].pid') as pid,
JSON_EXTRACT(detail, '$[*].sig_price') as single_price,
JSON_EXTRACT(detail, '$[*].count') as cnt,
JSON_EXTRACT(detail, '$[*].total_cost') as tot_price,
total_cost,
regdate
FROM branch_sale_order_detail
WHERE total_cost <> 0) as v_t
CROSS JOIN
( SELECT 1 as n UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION
SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) as numbers
WHERE CHAR_LENGTH(v_t.pname) - CHAR_LENGTH(REPLACE(v_t.pname, ',', '')) >= numbers.n-1
2. 오류문
Error: (3141, 'Invalid JSON text in argument 1 to function json_extract: "Missing a comma or \'}\' after an object member." at position 25.