mysql - sql COALESCE 结果 (12300.4567) 到 12,300
问题描述
如何选择 COALESCE 结果格式化(,0)
我的查询是
SELECT (COALESCE((SELECT SUM(`invoices`.`paid_amount`) FROM `invoices`
WHERE DATE(`invoices`.`date`)=CURDATE()),0) +
COALESCE((SELECT SUM(`other_incomes`.`other_income_amount`) FROM `other_incomes`
WHERE DATE(`other_incomes`.`date`)=CURDATE()),0))
AS total
FROM
....
解决方案
COALESCE 主要不会更改格式。它只返回传递给它的第一个非空值。
此外,与其尝试加入或执行两个不同的查询并添加,并分别处理所有总和和合并(更不用说四舍五入),我可能会将所有相关结果合并在一起,然后处理合并/总和/全部在最后。
尝试这个:
SELECT round(sum(coalesce(amt, 0)), 0) as total
FROM (
SELECT paid_amount as amt
FROM invoices i
WHERE date(i.date) = CURDATE()
union all
SELECT other_income_amount
FROM other_incomes o
WHERE date(o.date) = CURDATE()
) z
在这里,我首先 COALESCE,将空值设为 0。我将其包装在一个 SUM 中以将值相加,最后是一个 ROUND 以获取格式。从问题中不清楚您是要 ROUND 还是 FLOOR。如果你想用那个逗号得到它,请使用 FORMAT。这是 mySQL 文档。您没有指定您的 SQL 风格。
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_format
此外,您应该包括您的 sql 平台和版本、表的创建语句,以及一些将提供示例数据的插入语句,以及您正在寻找的结果。它将帮助人们回答您的问题。如果您可以包含一个小提琴,例如https://dbfiddle.uk/,那就太好了。
推荐阅读
- java - 如何使用 Mockito 通过注解注入模拟集合
- active-directory - 将 Microsoft Bot v4 与 ServiceNow 集成
- ietf-netmod-yang - 不可读 - YANG
- pdftron - PDFTRON 中的“此文档没有页面”错误
- python - 使用子进程打开一个exe文件并与之交互
- java - 如何将括号括在百分比周围?
- python - 如何在 Bert 序列分类中使用大于零的批量大小
- javascript - 刷新页面后如何保持复选框状态
- javascript - Firebase admin SDK FCM 错误 需要主题、令牌或条件之一
- typescript - 由于较旧的 Typescript SDK,Visual Studio 2017 任务在 Azure 管道中失败