2012-03-19 1 views
0

Предположительно мы имеем следующую таблицу:SQL применить сумму СРЕДНЕМ условно

index value 
1  55 
2  66 
3  77 
1  88 
3  99 

как я могу подвести (значение), когда индекс = 1 или индекс = 3, и средний (значение), когда индекс = 2 в один выберите заявление?

+0

Что ваш ожидаемый результат (в виде таблицы)? –

ответ

3

Легко:

SELECT index, CASE WHEN index IN (1, 3) THEN SUM(value) ELSE AVG(value) END 
FROM yourTable 
GROUP BY index 
+0

спасибо, я не знал, что раньше было дело. – karpar

+0

Добро пожаловать! –

1
SELECT sum(value) as agg, 
     'S' as aggregateType 
FROM DaTAble 
WHERE index IN (1, 3) 

UNION ALL 

SELECT avg(value) as agg, 
     'A' as aggregateType 
FROM DaTAble 
WHERE index = 2