ORDER BY with IF...ELSE SQL Server 2008 r2



我有一个非常基本的问题,我试图解决(基本对我来说,无论如何),但我有困难理解为什么一个比特的代码工作独立,但当你把它包装在一个IF语句,它没有。

这个可以正常工作:

SELECT DISTINCT H.FB FROM I_HSE H WHERE H.AC IN (@AC) ORDER BY H.FB

但是,当我尝试在IF语句中使用它时:

IF @FILTERBY = '2'
  BEGIN
    (SELECT DISTINCT H.FB FROM I_HSE H WHERE H.AC IN (@AC) ORDER BY H.FB)
  END

我得到错误"语法不正确附近的关键字'ORDER'

我已经做了一些搜索,但我似乎不明白为什么这不起作用。是否有其他方法对返回的结果集排序?

去掉括号

一样:

IF @FILTERBY = '2'
  BEGIN
    SELECT DISTINCT H.FB FROM I_HSE H WHERE H.AC IN (@AC) ORDER BY H.FB
  END

删除(and):

IF @FILTERBY = '2'
BEGIN
    SELECT DISTINCT H.FB FROM I_HSE H WHERE H.AC IN (@AC) ORDER BY H.FB
END

将SELECT

的圆括号旋转

最新更新