2016-10-22 4 views
-1

Сегодня мне нужно получить разницу в двух таблицах вместе с результатами, это мой сценарий.Получение различий между таблицами MySQL

enter image description here

Желаемый результат мне нужно следующее:

enter image description here

I судимое следующий SQL, но я не могу получить желаемый результат выше:

SELECT 
    Billings_Returns.billingreturn_id, 
    Billings_Returns.billin_id, 
    (Billings_Returns.billingreturn_total - Billings_Bills.billingbill_total) AS billingreturn_total 
FROM Billings_Returns 
LEFT JOIN Billings_Bills USING (billing_id) 
+0

на 3-й и 4-й строке строк billingreturntotal должна быть -30, -25 верно? – Teja

+0

Какой результат производит ваш запрос? – Teja

+0

@Teja Значение третьей строки 'billingreturn_total' составляет' -25', а четвертое - '5', потому что они получают разницу в следующей строке. –

ответ

0

Благодаря @Teja, решаемые запрос:

SET @total=0; 
SET @billingid=0; 
SELECT billingreturn_id, 
     billing_id, 
     IF(billing_id = @billingid, (billingreturn_total + (@total * -1)), billingreturn_total) AS billingreturn_total, @total:=billingreturn_total AS curr_quote, @billingid:=billing_id AS curr_billingid 
FROM 
( SELECT 
      billings_Returns.billingreturn_id, 
      billings_Returns.billing_id, 
      (billings_returns.billingreturn_total - 
       billings_bills.billingbill_total 
      ) AS billingreturn_total 
     FROM billings_returns 
     INNER JOIN 
      billings_Bills 
     USING (billing_id) 
) billings_returns; 
2
SELECT billingreturn_id, 
     billing_id, 
     - LAG(billingreturn_total, 1) OVER (PARTITION BY billing_id ORDER BY billingreturn_id) + billingreturn_total AS billingreturn_total 
    FROM 
    ( SELECT 
       Billings_Returns.billingreturn_id, 
       Billings_Returns.billing_id, 
       (Billings_Returns.billingreturn_total - 
        Billings_Bills.billingbill_total 
       ) AS billingreturn_total 
      FROM Billings_Returns 
     INNER JOIN 
       Billings_Bills U 
      USING (billing_id); 
    ) Z; 

Вышеупомянутый запрос будет про дуче ниже выход:

billingreturn_id | billingid | billingreturn_total 
1    | 1   | -30 
2    | 2   | -5 
3    | 2   | -25 
4    | 2   | 5 
+0

Пожалуйста, взгляните на нужный результат, изображенный выше: [link] (https://i.stack.imgur.com/B2eqo.png) –

+0

Попробуйте вышеупомянутый модифицированный sql ... это должно вернуть ur желаемый результат. – Teja

+0

Я получаю 2 ошибки в синтаксисе запроса, строки 3 и 15. 'MySQL Ошибка 1064: у вас есть ошибка в синтаксисе SQL' –

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