주문수량을 2줄씩 끊어서 조회되도록 하는 쿼리작성 도와주세요 ㅠ 0 8 632

by 찌녜 [SQL Query] 쿼리 [2019.10.29 10:52:47]


안녕하세요 어떤방식으로 쿼리를 작성해야할지 고민하다 글을 올립니다.

현재 ORDER_QTY (주문수량)을 2건씩 출력되도록 하고 싶습니다.

예를들어 다음과 같이 조회되었을경우

ORDER_QTY
5

         

이렇게 출력이 되게 하고싶습니다.. 

ORDER_QTY
2
2
1

 

가이드 주시면 정말 도움될 것 같습니다. 

감사합니다!

 

by 우리집아찌 [2019.10.29 13:13:07]
with t as (
select 5 order_qty from dual 
)

select case when order_qty >= ( level * 2 ) then 2 else mod( order_qty,2) end
from t connect by level <= round ( order_qty / 2 ) 

by 찌녜 [2019.10.29 13:41:41]

다들 감사드립니다 ㅠㅠ 도움이 정말 많이 되었습니다


by jkson [2019.10.29 13:15:56]

WITH T AS 
(
SELECT 5 ORDER_QTY FROM DUAL 
)
 SELECT DECODE(CONNECT_BY_ISLEAF, 1, MOD(ORDER_QTY, :DIVQTY), :DIVQTY) DIVQTY 
   FROM T 
CONNECT BY LEVEL <= CEIL(ORDER_QTY / :DIVQTY)

by 찌녜 [2019.10.29 13:41:37]

다들 감사드립니다 ㅠㅠ 도움이 정말 많이 되었습니다


by smileHaHa [2019.10.29 13:37:49]
WITH T AS (SELECT 5 ORDER_QTY FROM DUAL)
SELECT 
   CASE WHEN MOD(ORDER_QTY,2)=1 AND COUNT(*) OVER()=ROWNUM THEN 1 ELSE 2 END ORDER_QTY
FROM TEMP
CONNECT BY LEVEL<=ROUND(ORDER_QTY/2)

 


by 찌녜 [2019.10.29 13:41:35]

다들 감사드립니다 ㅠㅠ 도움이 정말 많이 되었습니다


by 랑에1 [2019.10.29 13:49:16]
-- 재귀(오라클 기준)
WITH t1(order_qty) AS
(
	SELECT 5 FROM dual 
)
, t2(use_qty) AS 
(
	SELECT 2 FROM dual 
)  
, t3(order_qty, rmn_qty) AS
(
	SELECT LEAST(t1.order_qty, t2.use_qty), t1.order_qty - LEAST(t1.order_qty, t2.use_qty)
  FROM t1, t2
  UNION ALL 
  SELECT LEAST(t3.rmn_qty, t2.use_qty), t3.rmn_qty - LEAST(t3.rmn_qty, t2.use_qty)
  FROM t3, t2
  WHERE t3.rmn_qty >= t2.use_qty OR t3.rmn_qty > 0
) 

SELECT order_qty
FROM t3

 


by 찌녜 [2020.07.03 11:15:23]

답변이 늦었네요 

해당 쿼리로 잘 처리하였습니다, 유용해서 다른 시스템에도 사용해보려니 10g 에선 with절 alias 가 안먹히네요 ㅎㅎ

감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입