mysql - 如何在 sql 或 power bi 中创建计算行?
问题描述
我正在尝试对我编写的 SQL 上的 2 行进行计算,这样我就可以有3 行作为利润并显示金额是否可能?
这个虚拟数据对任何公司都不真实!
见下文 :
SELECT a.pcg_type GL_Acoount_Group,
Abs(sum(b.debit-b.credit)) GL_Amount
FROM dolibarr.llx_accounting_account a
JOIN dolibarr.llx_accounting_bookkeeping b
ON a.account_number = b.numero_compte
WHERE a.pcg_type IN ('INCOME', 'EXPENSE')
ANDa.fk_pcg_version = 'PCG99-BASE'
GROUP BY a.pcg_type
结果:
团体。安特
收入 379200
费用 65700
预期成绩:
团体。安特
收入 379200
费用 65700
利润 313500
解决方案
使用 ROLLUP 添加额外的行,并在 SUM() 函数中使用 CASE 语句将费用值视为负数进行计算
--MySQL
SELECT COALESCE(acc_type, 'Profit') "Group"
, ABS(SUM(CASE WHEN acc_type = 'EXPENSE' THEN -amount ELSE amount END)) amt
FROM test
GROUP BY acc_type WITH ROLLUP
使用 UNION ALL 的另一种方法
SELECT acc_type "Group"
, SUM(amount) Amt
FROM test
GROUP BY acc_type
UNION ALL
SELECT 'Profit' AS "Group"
, SUM(CASE WHEN acc_type = 'EXPENSE' THEN -amount ELSE amount END) Amt
FROM test
请检查此网址https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=f859036ffcb3d808330bce5346daee1e
推荐阅读
- asp.net - 身份验证后是否可以使用“匿名”cookie?
- mysql - 如何将经典 ASP 代码连接到 FreeSQLDatabase.com 数据库?
- javascript - 面向 PHP 开发人员的 Eclipse - Javascript 内容辅助和任务不工作
- c++ - 如何仅使用 While 循环在给定范围内找到可被 7 整除的计数整数
- asp.net-core - .Net Core Logging Dependency Injection - 解决 ILogger / ILogger`1 - 勾号是什么意思?解析类型可能吗?
- sql - 如何使窗口函数在 Redshift 表上工作
- python - 将 2-D numpy 数组附加到 3-D numpy 数组
- fortran - 当我使用 mpifort 编译时,所有处理器都认为它们是根
- reactjs - 一次触发多个 api 调用
- javascript - 创建键值 javascript 值