繁体   English   中英

同一 sql 查询的不同结果取决于平台

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM