【问题标题】:SELECT statement with if ELSE in SQL ServerSQL Server 中带有 if ELSE 的 SELECT 语句
【发布时间】:2017-07-06 10:50:06
【问题描述】:

我有一张这样的表:

 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

【问题讨论】:

  • 我相信您正在寻找的是 CASE 陈述
  • 我不确定你到底在问什么。 MAX(ref) 肯定会给你ref002,而ref=ref 永远是真的……
  • if (ref = ref) 永远是真的,所以不清楚你在问什么。

标签: sql-server tsql


【解决方案1】:

您可以使用简单的聚合来做到这一点:

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

【讨论】:

    【解决方案2】:

    如果我正确理解了您的问题,您希望将 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
    

    【讨论】:

      猜你喜欢
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      相关资源
      最近更新 更多