A | B
-----|--------
31567|4748100
30257|15436740
계산식 => A*100/B (소수점 둘째자리까지 나타냄, 셋째짜리에서 반올림)
1.
31567 * 100 / 4748100 => 0.6648343547945494 => 0.66
2.
30257 * 100 / 15436740 => 0.1960064106799752 => 0.2 이지만 0.2 로 표현해야함
:: TRY_CONVERT(VARCHAR, ROUND(TRY_CONVERT(FLOAT, A) * 100 / TRY_CONVERT(FLOAT, B), 2))
이렇게 작성을 했었는데, 2번이 0.20가 아니라 0.2로 나와서요... 0.20이 나올수 있도록 할 수 있을까요??
뭔가 간결한 방법이 있을듯도 한데요..
with t (a,b) as ( select 31567, 4748100 union all select 30257, 15436740 ) select cast(cast(round(cast(a as float)*100/b,2) as decimal(5,2)) as char(5)) from t
WITH t AS
(
SELECT 31567 a, 4748100 b
UNION ALL SELECT 30257, 15436740
)
SELECT a, b
, CAST(a * 100. / b AS DECIMAL(5, 2)) c
, CONVERT(DECIMAL(5, 2), a * 100. / b) d
FROM t
;