2013-09-29 3 views
1

я пишу небольшую финансовую программу для моей личности и я застряли йоту этого маленький вопроса здесь :)функция Mysql SUM с помощью оператора IF

Я хранить свои квитанции в двух различных валютах (доллары США, евро). В основном я хочу сделать запрос SELECT, который вернет суммарную сумму квитанций в евро.

SELECT SUM(IF(type='euro',amount,amount*value)) FROM receipt 

Что я выяснил до сих пор, что этот запрос выше не будет проходить через каждую строку таблицы. Он суммирует второе утверждение только для меня.

Любая помощь очень ценится.

+0

Что вы подразумеваете под «* он суммирует только второе утверждение»? Можете ли вы привести более конкретный пример? Например, некоторые примеры данных и вывода. Возможно, на http://sqlfiddle.com? – eggyal

ответ

0
SELECT SUM(SELECT amount FROM receipt WHERE type='euro') AS euro_amount, SUM(SELECT amount FROM receipt WHERE type='usd') AS usd_amount FROM receipt 

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

+0

Прошу прощения, но этот ответ совершенно неверен. 'SUM (IF())' отлично. -1 – eggyal

+0

eggyal Я только что сказал «вы не можете» с точки зрения вопросов, и это может быть возможно, но сначала нам нужно увидеть практическое представление о его сценарии, я прав? @eggyal – Sabbir

+0

Ну, на мой взгляд, запрос, что OP должен работать нормально: см. [Sqlfiddle] (http://sqlfiddle.com/#!2/206a0/1/0). * Практический взгляд на его сценарий * «может помочь определить, почему он не работает для ОП, но не должен быть строго необходим. – eggyal

0

Как насчет:

select 
    (select sum(amount) from receipt where type='euro') + 
    (select sum(amount)*value from receipt where type != 'euro') 
+0

Остерегайтесь того, что это полностью исключает любую «квитанцию, где type is null». – eggyal

+0

@eggyal почему вы думаете, что тип может быть нулевым? – Nailgun

+0

У меня нет информации об обратном. Вы? – eggyal

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