加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 获取大于零的最小值

发布时间:2020-12-12 08:40:02 所属栏目:MsSql教程 来源:网络整理
导读:我有下表: column1 column2 column3 3 2 0 5 9 2 1 4 6 当我运行以下代码: SELECT id_function = @param,MIN(t1.column1) AS c1min,MAX(t1.column2) AS c2max,MIN(t1.column3) AS c3minFROM table1 (NOLOCK) AS t1WHERE t1.id = @param 我得到: c1min c2ma
我有下表:
column1   column2   column3
   3         2         0
   5         9         2
   1         4         6

当我运行以下代码:

SELECT
  id_function = @param,MIN(t1.column1) AS c1min,MAX(t1.column2) AS c2max,MIN(t1.column3) AS c3min
FROM
  table1 (NOLOCK) AS t1
WHERE
  t1.id = @param

我得到:

c1min   c2max   c3min
  1       9       0

我的问题是c3min必须是大于零的最小值.
我需要的结果应该是:

c1min   c2max   c3min
  1       9       2

有没有办法做,而不使用子选择?
任何帮助将不胜感激.

谢谢!

解决方法

我建议使用nullif(),所以你的查询将是
SELECT id_function = @param,MIN(NULLIF(t1.column3,0) AS c3min
FROM table1 (NOLOCK) AS t1
WHERE t1.id = @param

这样你就不会改变你的结果,例如如果您在第3列中的真实最小值为100,则以前的答案将会影响您的结果,如果您的列3列中只有零,则以前的答案也将提供不正确的结果

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读