如何在WITH中使用IF语句?

How to use IF statement inside WITH?

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

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

例如,我得到的参数 @bookType 的值为 'All',我需要做这样的事情:

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

看起来很简单,但我需要这个 IF inside WITH:

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)

)