2014-07-24 9 views
1

HQL 문에서 select 문에서 metric_ty를 계산하고 flag_ty가 '0'이면 metric_ly는 0을 취합니다. 그렇지 않으면 metric_ly가 계산됩니다. 제 문제는 metric_ty는 십진수 값을 반환합니다 (예 : 54.32). metric_ly는 그렇지 않습니다 (예 : 54.00).HQL 계산의 경우 '십진수를 반환하지 않는 경우'

왜 이런 일이 발생하는지 알고 싶습니다. 케이스 - 루프 내에서 10 진수 값을 반환 할 수 있습니까?

select (p.total_revenue/p.total_units) as metric_ty, 
    (case 
    when flag_ty = 'Zero' THEN 0 ELSE 
    (total_revenue_ly/total_units_ly) END) 
    as metric_ly 
    from Com p 

case-when 문을 사용하고 정확한 숫자를 얻고 반올림하지 않을 수 있습니까?

모든 제안을 환영합니다.

답변

0

첫 번째 스칼라 표현 (0)을 기준으로 데이터 유형이 선택됩니다. 0 대신에 0.0을 사용하면 문제를 해결할 수 있습니다.

SELECT (p.total_revenue/p.total_units) AS metric_ty, 
    (CASE 
     WHEN flag_ty = 'Zero' THEN 0.0 
     ELSE (total_revenue_ly/total_units_ly) END) 
    END metric_ly 
FROM Com p