2017-02-17 113 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;