我有下表:
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列中只有零,则以前的答案也将提供不正确的结果