SELECT语句的if else在SQL Server
问题描述:
我有一个表是这样的:SELECT语句的if 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
答
如果我理解正确你的问题,你想不同的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
答
您可以使用简单的聚合来做到这一点:
select ref,
case when min(doc) = max(doc)
then max(doc) else sum(doc) end doc_total
from t
group by ref;
我相信你在找什么是CASE语句 – Roy
我不确定你到底在问什么。 'MAX(ref)'肯定会给你'ref002','ref = ref'永远是真的...... – ydoow
'if(ref = ref)'永远是真的,所以你不清楚你在问什么。 –