[英]Different results from the same sql query depending on platform
下面的查询给出了两个不同的结果,具体取决于我用来执行查询的平台。 在 Phpmyadmin 我得到一个结果和 Flyspeed 另一个结果。 看截图: . 为什么会有区别? 是否存在会导致差异的设置?
Select
untdchem_db2.customer_credits.CustID,
untdchem_db2.customers.CustCompanyName,
(To_Days(CurDate()) - To_Days(untdchem_db2.customer_credits.CustCreditDate)) As days_past_due,
Sum(If(((Select
days_past_due) Between 1 And 30), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As zero_30,
Sum(If(((Select
days_past_due) Between 31 And 40), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As thirty_40,
Sum(If(((Select
days_past_due) Between 41 And 50), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As forty_50,
Sum(If(((Select
days_past_due) Between 51 And 60), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As fifty_60,
Sum(If(((Select
days_past_due) Between 61 And 90), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As sixty_90,
Sum(If(((Select
days_past_due) > 90), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As ninety_plus
From
customer_credits Inner Join
customers On customer_credits.CustID = customers.CustID
Where
customer_credits.CustCreditTakenDate Is Null
Group By
customer_credits.CustID;
因为days_past_due
是聚合字段。 似乎phpmyadmin先计算days_past_due
,再计算Sum。
总和不要使用 days_past_due。
检查此查询:
Select
untdchem_db2.customer_credits.CustID,
untdchem_db2.customers.CustCompanyName,
(To_Days(CurDate()) - To_Days(untdchem_db2.customer_credits.CustCreditDate)) As days_past_due,
Sum(If(((To_Days(CurDate()) - To_Days(untdchem_db2.customer_credits.CustCreditDate)) Between 1 And 30), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As zero_30,
Sum(If(((To_Days(CurDate()) - To_Days(untdchem_db2.customer_credits.CustCreditDate)) Between 31 And 40), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As thirty_40,
Sum(If(((To_Days(CurDate()) - To_Days(untdchem_db2.customer_credits.CustCreditDate)) Between 41 And 50), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As forty_50,
Sum(If(((To_Days(CurDate()) - To_Days(untdchem_db2.customer_credits.CustCreditDate)) Between 51 And 60), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As fifty_60,
Sum(If(((To_Days(CurDate()) - To_Days(untdchem_db2.customer_credits.CustCreditDate)) Between 61 And 90), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As sixty_90,
Sum(If(((To_Days(CurDate()) - To_Days(untdchem_db2.customer_credits.CustCreditDate)) > 90), untdchem_db2.customer_credits.CustCreditTotalAmount, 0)) As ninety_plus
From
customer_credits Inner Join
customers On customer_credits.CustID = customers.CustID
Where
customer_credits.CustCreditTakenDate Is Null
Group By
customer_credits.CustID;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.