Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图让SQL给我一个静态的总数,不管日期范围如何_Sql_Totals - Fatal编程技术网

试图让SQL给我一个静态的总数,不管日期范围如何

试图让SQL给我一个静态的总数,不管日期范围如何,sql,totals,Sql,Totals,我正在处理的问题是在where条款之外发生的付款 如果我有两次付款,分别是2020年10月1日和2020年10月20日,每次20美元,我需要看到总共支付40美元。但是,金额会根据日期过滤器进行更改 如果我选择10/1-10/20,它将显示支付总额为40,但如果我选择10/15-10/20,它将只显示20。我有三列,分别是Bill、Total Paid、amount Payed on date。工资总额应该保持停滞 示例查询 Select b.name as bill, bp.amount as

我正在处理的问题是在where条款之外发生的付款

如果我有两次付款,分别是2020年10月1日和2020年10月20日,每次20美元,我需要看到总共支付40美元。但是,金额会根据日期过滤器进行更改

如果我选择10/1-10/20,它将显示支付总额为40,但如果我选择10/15-10/20,它将只显示20。我有三列,分别是Bill、Total Paid、amount Payed on date。工资总额应该保持停滞

示例查询

Select b.name as bill, bp.amount as 'amount paid'
from bill b 
left join billpayment bp on b.id=bp.bill_id
where bp.date between Startdate and Enddate

这就是付款,但我希望它将日期范围之外发生的所有付款相加。

如果您想要总金额,请在子查询中使用窗口函数:

select bp.*
from (Select b.name as bill, bp.amount as amount_paid,
             sum(bp.amount) over () as total_amount
      from bill b left join
           billpayment bp
           on b.id = bp.bill_id
     ) bp
where bp.date between Startdate and Enddate

因此,我正在运行上面的代码,但是得到了一个“您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以了解在运行时使用接近“()”错误的正确语法。我已经试着玩弄措辞,但仍然无法处理它。使用SEQUEL PRO作为参考。使用正在使用的数据库标记您的问题。