2017-02-17 16 views
-5

У меня есть таблица выглядит следующим образом:ЗЕЬЕСТА с тем, если ELSE в SQL Server

ref  doc 
----------- 
ref001 3 
ref001 3 
ref002 1 
ref002 4 
ref002 1 

Я хочу использовать SELECT с IF ELSE заявления или любым другим условным оператором аналогична этой идея:

SELECT MAX(ref), THEN SELECT IF MAX(doc)) OR ELSE SUM(doc) 

Выход для образца:

ref001 3 
    ref002 6 
+0

Я верю, что вы ищете, является оператором CASE – Roy

+0

Я не уверен, что именно вы просите. 'MAX (ref)' определенно даст вам 'ref002', а' ref = ref' всегда истинно ... – ydoow

+0

'if (ref = ref)' всегда будет true, поэтому непонятно, что вы спрашиваете. –

ответ

0

Если я правильно понял ваш вопрос, вы хотите отчетливый ref номер с doc числа следующего условия (как на выход показан). Если все существующие номера doc одинаковы для номера ref, тогда получите max(doc) иначе sum(doc).

SELECT ref, 
     (CASE WHEN MAX(doc) = MIN(doc) THEN MAX(doc) ELSE SUM(doc) END) AS doc 
FROM table1 
GROUP BY ref 
1

Для этого можно использовать простые агрегаты:

select ref, 
    case when min(doc) = max(doc) 
     then max(doc) else sum(doc) end doc_total 
from t 
group by ref;