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

前端之家收集整理的这篇文章主要介绍了sql-server – 获取大于零的最小值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有下表:
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列中只有零,则以前的答案也将提供不正确的结果

猜你在找的MsSQL相关文章