首页 > 解决方案 > CASE WHEN 中的 ROUND 功能不起作用

问题描述

所以我有以下查询,我遗漏了一些内容并更改了问题的名称:

WITH GET_T AS (
Select table.key
       ,COUNT(DISTINCT(T1.ID)) OVER (PARTITION BY(T.KEY)) as Count  
FROM T
     Left Join T1 ON T1.key = T.key
)
  
SELECT T5.key,
       case when Count > 0 then ROUND(SUM(total_amt) OVER (PARTITION BY(T4.key))/ Count, 3)
           else 0
             end AS total_invoiced_amount
FROM T3
LEFT JOIN T4 ON T4.key = T3.key
LEFT JOIN T5 on T3.id = T4.d

在我的结果集中,TOTAL_INVOICED_AMOUNT 列未四舍五入到小数点后三位。我要在这里更改什么,所以我始终保留 3 位小数

目前我得到

标签: sqloracleplsql

解决方案


要显示尾随零,您必须将值转换为文本:

to_char(case when Count > 0 then ROUND(SUM(total_amt) OVER (PARTITION BY(T4.key))/ Count, 3)
       else 0
         end,'FM999,9999,990.000') 

推荐阅读