首页 > 解决方案 > 如何在 SQL 中使用 MIN 和 MAX 函数避免 0 值?

问题描述

我有这样的表:

Running    Date
  128      1/1/2018
  700      6/11/2018
  900      6/11/2018
  300      6/11/2018

如果日期相同,则选择最小值和最大值并从“运行”列中获取差异。如果只有一个日期,那么什么都不做并获得相同的价值

询问:

SELECT MAX(RUNNING) - MIN(RUNNING) "RUNNING", DATE
FROM TABLE
GROUP BY DATE;

我得到以下结果:

Running    Date
  0        1/1/2018
  600      6/11/2018

但我想要“128”值和“2018 年 1 月 1 日”日期,但这给出 0 值

如何解决这个问题?

标签: oracleoracle10goracle-sqldeveloper

解决方案


包括一个CASE声明。

SELECT
     CASE
          WHEN MAX(running) = MIN(running) THEN MAX(running)
          ELSE MAX(running) - MIN(running)
     END
"RUNNING",
     dt
FROM t
GROUP BY dt;

推荐阅读