2014-10-18 2 views
3

У меня есть эта таблица:Выберите сумму столбца с более высоким значением в строке досягаемости

a b 
----- 
1 3 
4 3 
2 1 

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

Я пробовал со следующим запросом, но SUM() не признает ценность, которую я хочу, чтобы он суммировал.

SELECT IF(a > b, a, b) AS number, SUM(number) FROM table; 
+1

В обработке логических запросов SELECT происходит все вместе одновременно, поэтому он не распознает псевдоним, который вы указываете в своем SELECT. Поэтому просто используйте свое условие, а не используйте псевдоним. – sqluser

+0

Спасибо, 'SELECT SUM (IF (a> b, a, b))', что в основном является синонимом ответа, также отлично работает – cedivad

ответ

2

Как насчет case

SELECT SUM(CASE WHEN a > b THEN a ELSE b END) 
FROM table 
1

Вы можете попробовать, как этот IF():

SELECT SUM(IF(a > b, a, b)) FROM test 

или случай

SELECT SUM(CASE WHEN a > b THEN a ELSE b END) FROM test 

Sql скрипку: http://sqlfiddle.com/#!2/204f7/1