Javascript 在knexjs mysql中获取union多列后,sum不起作用

Javascript 在knexjs mysql中获取union多列后,sum不起作用,javascript,mysql,sql,node.js,knex.js,Javascript,Mysql,Sql,Node.js,Knex.js,我需要一个4列的和,我先取并集,然后运行和 db.select("gen-acute-sales-before-returns").table('sales') .union(function() { this.select("gen-acute-sales-after-returns").table('sales') }) .union(function(){ this.select("gen-chronic-sales-before-returns").tab

我需要一个4列的和,我先取并集,然后运行和

  db.select("gen-acute-sales-before-returns").table('sales')
  .union(function() {
    this.select("gen-acute-sales-after-returns").table('sales')
  })
  .union(function(){
    this.select("gen-chronic-sales-before-returns").table('sales')
  })
  .union(function(){
    this.select("gen-chronic-sales-after-returns").table('sales')
  })
  .sum({totalSales:"gen-acute-sales-before-returns"})
  .then(result => res.json(result))

问题是我得到了一个union表,但是sum不起作用

我只是在这里添加了一般的knex调试指南,因为这个问题非常模糊

通过调用查询生成器的
.toSQL()
查看生成的查询。然后可以查看生成的查询是否有错误

console.log(
  db.select("gen-acute-sales-before-returns").table('sales')
  .union(function() {
    this.select("gen-acute-sales-after-returns").table('sales')
  })
  .union(function(){
    this.select("gen-chronic-sales-before-returns").table('sales')
  })
  .union(function(){
    this.select("gen-chronic-sales-after-returns").table('sales')
  })
  .sum({totalSales:"gen-acute-sales-before-returns"}).toSQL().sql
);

knex的union方法完全可能存在缺陷(这不是第一次)。

请定义“sum不起作用”。当前的结果和期望的结果将是一个良好的开端。首先,为什么要使用
UNION
?选择
gen退货后急性销售+gen退货前慢性销售+gen退货后慢性销售
并返回其总和。