javascript - Knex - knex 和 mysql 工作台之间的 SUM 查询结果返回不同的值
问题描述
我目前在对字段求和时面临这个问题。我正在使用 Knex 和 Mysql。
使用 Knex 时,我得到 LastYr 列的这个结果。
克尼克斯结果:
但是在 Mysql Workbench 中做同样的查询,我得到了这个(这就是我想要的)
Mysql 工作台:
我的查询是这样的:
SELECT t1.*, IFNULL(t2.TotalUnits,0) AS TotalUnits, ROUND(IFNULL(t2.totalRevenue,0),0) AS TotalRevenue FROM (SELECT BranchDept, ForPeriod, SUM(SysGen) AS Gen, SUM(UserInput) as Live, SUM(PrevYear) AS LastYr, SUM(SysGen) - SUM(UserInput) AS Input FROM tbl_demand_forecast_details WHERE BranchDept='" + req.body.branchdept + "' AND ForPeriod >= '" + fystart + "' " +
"AND ForPeriod <= '" + fyend + "' GROUP BY BranchDept, ForPeriod " +
"ORDER BY ForPeriod) AS t1 " +
"LEFT OUTER JOIN " +
"(SELECT BranchDept, AsOfPeriod, SUM(UnitSales) AS totalUnits, SUM(PesoSales) AS totalRevenue FROM tbl_sales_history " +
"WHERE BranchDept='" + req.body.branchdept + "' AND AsOfPeriod >= '" + fystart + "' AND AsOfPeriod <= '" + fyend + "' GROUP BY AsOfPeriod) AS t2 " +
"ON t1.BranchDept = t2.BranchDept AND t1.ForPeriod = t2.AsOfPeriod
似乎 knex 正在将上一个值添加到 LastYr 列中的下一个值。我用 knex.raw 和 knex 方法尝试了这个,但我仍然得到错误的值。
在过去的两天里,这让我发疯了。有人指出我正确的方向吗?
解决方案
好的。我终于明白了。
当求和的列上有空值时,SUM 查询会出现问题。用零替换那些解决了这个问题。
推荐阅读
- python - pysnmp 自定义 MIB-Walk 失败
- html - 如何仅显示图像名称而不是完整的图像路径
- javascript - 这个使用 API 的 Alexa 意图有什么错误?
- pytorch - 多维向量的 Torch 选择索引
- jakarta-mail - 在报告名称中使用泰文字符安排 jasper 报告会导致电子邮件带有错误的文件名附件
- gdb - 每当我运行 risc64-unknown-elf-gdb 时,如何解决此错误?
- reactjs - 为什么我必须通过 React 中的 useEffect 挂钩更新内部状态?
- c++ - 我可以在哪种基本数据类型中存储地址
- flutter - 如何在 bloc 模式颤动中调用函数
- php - 如何在php中将ajax值从一种形式发布(传递)到另一种形式