계산식 표현 방법 문의좀 드리겠습니다. 0 6 869

by 충성 [2017.01.10 17:40:26]


품목 수량 기준
A 15 7
B 23 10

 

이런식으로 되어 있는데요

원하는결과는

품목 수량
A 21
B 30

 

이런결과 값을 얻고 싶습니다.

품목의 수량을 기준으로 나누고 남은 값이 있으면 기준수량 만큼 더해줘서 값을 만들고 싶습니다.

제 머리에서는 수량을 기준으로 나누고 올림해서 기준수량으로 곱하는건데.

 

이렇게 연산을 하고 또하는거 말고 깔끔하게 가져오는 방법이 있는가 해서 문의 드립니다.

by jkson [2017.01.10 17:49:53]
with t as
(select 'A' cd, 15 qty, 7 std from dual union all
select 'B', 23, 10 from dual
)
select cd, qty + decode(mod(qty,std),0,0,std - mod(qty,std)) val from t

아.. 미리 만들어놓으신 게 있으시군요? ceil(qty/std) * std. 더 깔끔하게 만들어달랬는데 답글부터 달고 보는 센스란..ㅋ; 어떻게 더 깔끔하게 만들죠?


by 충성 [2017.01.11 09:24:36]

감사합니다.

방법은 여러가지가 있는데 어찌되었던 제가 한 방법이랑 비슷하지만

 

살짝 다르네요


by 마농 [2017.01.10 17:54:48]

나누고 남은 값이 없는 예제도 추가해 주세요.

반올림이 기준인가요? 반올림 되는 예 안되는 예 구분해서 추가해 주세요.


by 충성 [2017.01.10 17:56:26]

아 반올림이 아니라 올림입니다

착각했네요


by 마농 [2017.01.10 18:48:28]
WITH t AS
(
SELECT 'A' cd, 15 qty, 7 std FROM dual
UNION ALL SELECT 'B', 23, 10 FROM dual
UNION ALL SELECT 'C', 24,  8 FROM dual
)
SELECT cd
     , qty
     , std
     , CEIL(qty / std) * std AS val
  FROM t
;

 


by 충성 [2017.01.11 09:23:27]

오 감사합니다.

가독성이 훨씬 좋은거 같네요

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