繁体   English   中英

在WITH中如何使用IF语句?

[英]How to use IF statement inside WITH?

找不到合适的例子(或者也许我只是看错了方向)。

根据传入的参数值,我需要更改SELECT WHERE条件。

例如,我获得了@bookType参数,其值为'All',我需要进行如下操作:

IF @bookType = 'All'
  SELECT * FROM tBooks
  WHERE BookType != 'Template' AND BookGroup='Library'
ELSE
  SELECT * FROM tBooks
  WHERE BookType = @bookType AND BookStatus=@bookStatus

看起来很简单,但是我需要在WITH中使用以下IF:

WITH Books AS (
  IF...
  ...
), bookIds AS (
  ...
  ...
)

这不起作用,因为我开始收到'Incorrect syntax near IF' 我到底在做什么错? 还是有可能将这个IF隐藏在WHERE语句中(根据参数值更改位置)?

;
WITH Books AS (

     SELECT * FROM tBooks
        WHERE
            (@BookType = 'All'  AND BookType != 'Template' AND BookGroup='Library')
            OR
            (@BookType <> 'All' AND BookType = @bookType AND BookStatus=@bookStatus)

)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM