如何在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)
)
找不到合适的例子(或者我只是看错了方向)。
根据传入的参数值,我需要更改 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)
)