2017-02-17 116 views
-5

我有一個表是這樣的:SELECT語句的if else在SQL Server

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

我想用SELECTIF 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)'永遠是真的,所以你不清楚你在問什麼。 –

回答

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;