2017-02-08 3 views
1

У меня есть имя столбца «СуммаLC» в таблице db. Другое название столбца «DebitCredit» определяет, является ли «Суммарное значение» положительным или отрицательным. Если DebitCredit = "H", значения в AmountLC отрицательны. Если DebitCredit = "S", значения в AmountLC являются положительными. Мне нужно сделать запрос, чтобы получить сумму AmountLC. Я пытался получить логику, но не получил. Буду признателен, если кто-нибудь сможет мне помочь.MYSQL SUM положительных и отрицательных значений

Я пробовал приведенный ниже код в соответствии с другими обсуждениями в 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']; 

код Обновление результатов: ВЫБРАТЬ AmountLC, DebitCredit FROM T1_CSV_Table WHERE TaxCode = "A0" И месяц = ​​"12"

enter image description here

+3

Каждый раз, когда вы используете [ 'mysql_'] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) dat расширение расширения в новом коде ** [Котенок задушен где-то в мире] (http://2.bp.blogspot.com/-zCT6jizimfI/UjJ5UTb_BeI/AAAAAAAACgg/AS6XCd6aNdg/s1600/luna_getting_strangled.jpg) ** это устарел и был в течение многих лет и ушел навсегда в PHP7. Если вы просто изучаете PHP, потратьте свои силы на изучение расширений базы данных «PDO» или «mysqli» и подготовленных операторов. [Начать здесь] (http://php.net/manual/en/book.pdo.php) – RiggsFolly

+1

Не должно 'THEN DebitCredit' быть' THEN AmountLC'? – Barmar

+1

Как насчет 'SUM (CASE WHEN DebitCredit = 'H' THEN AmountLC * -1 ELSE AmountLC END) как Total,' – RiggsFolly

ответ

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 Tables Даже if you are escaping inputs, its not safe! Использование prepared parameterized statements

+0

Я принимаю этот ответ. Я попытаюсь понять, что случилось с моим кодом. Спасибо за логику :) – Zendie

-1

попробовать это пожалуйста:

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'; 
+0

почему вы голосуете? –

+0

Я этого не делал. Я пытаюсь это сделать. Спасибо – Zendie

+0

Зачем беспокоиться, его нелегкое добавление и вычитание «H» и «S» и получение какого-либо полезного ответа – RiggsFolly

Смежные вопросы