sql - 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 位小数
- 0.000、80.000、175.160
目前我得到
- 105.5 当它应该是 105.500
- 80 应该是 80.000
- 0 当它应该是 0.000
解决方案
要显示尾随零,您必须将值转换为文本:
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')
推荐阅读
- joi - Comparing two objects in Joi validation (eg. to avoid duplicates)
- google-chrome-extension - 如何使 windows.getSelection 返回选定的文本
- python - 获取 bs4.element.ResultSet 对象的第一个元素
- javascript - 使用 ESLint 安装依赖项时出错,STDIN 未获取密钥
- python - 如何在情节中可视化单个值
- java - 未填写托管 bean ArrayList 的 sql 语句中的列表
- python - 如何在scrapy中登录后重定向
- amazon-web-services - 我怎样才能拥有拒绝访问所有存储桶的 s3 策略,除了以字符串“xyz”开头的存储桶?
- c# - 我的代码是否以正确的顺序执行?
- maven - React Native:将多个 Maven url 匹配到特定的依赖项?