2013-04-17 4 views
3

Я пытаюсь вычесть проданные доллары против купленных долларов.как вычитать в mysql в той же строке на основе другого столбца

**|Tran_ID|Currency_type|currency_Amount|Local_Amount| Rate |Tran_type| ** 
    | 85  | USD  | 2500  | 1581.54 |1.58074 | Bought | 
    | 78  | USD  | 3487.57 | 2206.29 |1.58074 | Bought | 
    | 86  | USD  | 100  | 63.26 |1.58074 | Bought | 
    | 87  | USD  | 94.17  | 63.26 |1.48866 | Sold | 
    | 88  | USD  | 2600  | 1746.54 |1.48866 | Sold | 
    | 89  | USD  | 2600  | 1746.54 |1.48866 | Sold | 

Я могу добавить суммарные значения долларов, проданные или купленных с запросом ниже

SELECT Currency_type, sum(currency_Amount) AS total_bought 
FROM Transaction 
WHERE Currency_type= 'USD' 
AND Tran_type = 'Bought'  <== **or 'Sold'** 

результата находится ниже

**|Currency_type | total_bought |** 
|USD    |6087.570068359375| 
+0

Один из тех столбцы ree (currency_Amount | Local_Amount | Rate) являются избыточными, поскольку каждый из них может быть легко получен из двух других ... oh, а ваш тип данных валюты DECIMAL, так? – Strawberry

+0

да, но я использую базу данных для подключения к внешнему приложению, которое я его фильтрую там, –

+0

В чем вопрос? Если вы хотите сопоставить разные строки в базе данных, вам нужен ключ, который связывает эти 2 строки. – symcbean

ответ

8

Вы просто может иметь знак на Вашей сделке тип:

SUM(currency_Amount * IF(Tran_type = "Bought", 1, -1)) 
+0

Как я могу обойти оба значения вместе>? например, доллары, купленные равными 6087,57, и проданные доллары равные 5294,16. вычитая их, дайте мне 793,41 в балансе. как я могу это запросить? –

+0

Мой ответ должен работать. Замените SUM на это и удалите AND. – sashkello

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