2012-01-16 8 views
0

Я пытаюсь создать полеMYSQL сумма поля в зависимости от значения другого поля

1.sum поле закупки, где значение типа покупок = чан, как purchases_vat

2. Подводя поле покупки, где значение типа покупки = освобожденной, как purchases_exempt

исходной таблицы & результата примера таблицы в прилагаемом изображении

example table

ответ

1

Как насчет этого?

SUM(CASE WHEN purchases_type='vat' THEN Purchases ELSE 0 END) AS purchases_vat, 
SUM(CASE WHEN purchases_type='exempt' THEN Purchases ELSE 0 END) AS purchases_exempt, 
+0

+1 Мне нравится ваше решение лучше :-) –

+0

Спасибо. Он работает отлично. – Joshi

0

Два варианта строки:

SELECT 'vat', SUM(purchases) 
FROM source_table 
WHERE purchase_type = 'vat4' 

UNION 

SELECT 'exempt', SUM(purchases) 
FROM source_table 
WHERE purchase_type = 'exempt'; 

Один ряд:

SELECT 
    (SELECT sum(purchases) from source_table where purchase_type = 'vat4') purchase_vat, 
    (SELECT sum(purchases) from source_table where purchase_type = 'exempt') purchase_exempt; 
0

Это даст вам сумму покупок для 'чан'. Вы можете так же сделать это за «освобождение»

SELECT `s` FROM (SELECT SUM(purchases), type FROM my_table GROUP BY type) as T1 WHERE T1.type = 'vat 
0
select 
    sum(case when purchase_type = 'vat4' then purchases else 0 end) as purchase_vat4, 
    sum(case when purchase_type = 'exempt' then purchases else 0 end) as purchase_exempt 
from source_table 
+0

@SergioTulentsev Я тестировал вашу версию и свою версию на SQL Server, а мой - быстрее (дважды). Вы выполняете два запроса на одно значение суммы для 'vat4' и другие суммы' освобождаются', поэтому, на мой взгляд, это неэффективно. –

+0

@SergioTulentsev, если вы пытаетесь сказать, что я могу пропустить слова 'from source_table' - по-моему, это невозможно, потому что как вы могли (или MySQL) знать, где находятся столбцы' purchase_type' и 'покупки'? Если вы говорите о ключевом слове 'from' только тогда, в соответствии с [12.2.8. SELECT синтаксис] (http://dev.mysql.com/doc/refman/5.0/en/select.html) также невозможно (часть: '[FROM table_references'). Buuuuut Я не могу проверить это прямо сейчас, и, может быть, я ничего не знаю. Все, что я знаю, это не будет работать без 'from' в этой форме (я использовал) в SQL Server. –

+0

Ах, извините, мой плохой. Неважно. Я как-то думал, что это мой код :-) –