【问题标题】:MYSQL SUM of positive and negative valuesMYSQL 正负值之和
【发布时间】:2017-02-09 08:36:36
【问题描述】:

我在 db 表中有一个列名“AmountLC”。另一个列名称“DebitCredit”确定“AmountLC”是正数还是负数。如果 DebitCredit="H",AmountLC 中的值为负数。如果 DebitCredit="S",AmountLC 中的值为正。我需要进行查询以获得 AmountLC 的总和。我试图得到逻辑,但没有得到任何。如果有人可以帮助我,我将不胜感激。

我根据其他 stackoverflow 讨论尝试了以下代码。

$F7 = mysql_query("SELECT 
                SUM(CASE WHEN DebitCredit='H' THEN DebitCredit ELSE 0 END) as NegativeTotal,
                SUM(CASE WHEN DebitCredit='S' THEN DebitCredit ELSE 0 END) as PostiveTotal 
                FROM T1_CSV_Table 
                WHERE Month='$getMonth' AND TaxCode='A0'");

谢谢! 更新代码

$F7 = mysql_query("SELECT 
                    SUM(CASE WHEN DebitCredit='H' THEN AmountLC*-1 ELSE AmountLC END) as Total 
                    FROM T1_CSV_Table 
                    WHERE Month='$getMonth' AND TaxCode='A0'");
    $rowf7 = mysql_fetch_array($F7);
    echo "Total-".$rowf7['Total'];

更新结果代码: SELECT AmountLC,DebitCredit FROM T1_CSV_Table WHERE TaxCode="A0" AND Month="12"

【问题讨论】:

  • 每次在新代码中使用the mysql_ 数据库扩展a Kitten is strangled somewhere in the world 时,它都会被弃用,并且已经存在多年,并且在 PHP7 中永远消失了。如果您只是学习 PHP,请花精力学习 PDOmysqli 数据库扩展和预处理语句。 Start here
  • 不应该THEN DebitCreditTHEN AmountLC
  • SUM(CASE WHEN DebitCredit='H' THEN AmountLC*-1 ELSE AmountLC END) as Total,怎么样
  • 是的,我知道这不是逻辑。刚试了一段代码。没有单独的正负值。我需要决定取决于 DebitCredi 的值。
  • @RiggsFolly 我会试试的

标签: php mysql


【解决方案1】:

如果您想要的只是借方和贷方的总和,您可以一次完成所有计算

SELECT 
    SUM(CASE WHEN DebitCredit='H' THEN AmountLC*-1 ELSE AmountLC END) as Total
FROM T1_CSV_Table 
WHERE Month='$getMonth' AND TaxCode='A0'

注意:您的脚本存在SQL Injection Attack 的风险 看看Little Bobby TablesEven 发生了什么 if you are escaping inputs, its not safe! 使用prepared parameterized statements

【讨论】:

  • 我接受这个答案。我将尝试找出我的代码有什么问题。感谢您的逻辑:)
【解决方案2】:

请试试这个:

SELECT
    SUM(IF(DebitCredit='H', DebitCredit, 0) AS NegativeTotal,
    SUM(IF(DebitCredit='S', DebitCredit, 0) AS PostiveTotal
FROM T1_CSV_Table 
WHERE
    MONTH='$getMonth'
AND
    TaxCode='A0';

【讨论】:

  • 我没有。我正在尝试这个。谢谢
  • 何必呢,添加和减去HS 并得到任何有用的答案并不容易
  • 不能。再看问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
相关资源
最近更新 更多