我正在尝试在IF
之后制作一个WITH
,它给我错误Incorrect syntax near the keyword 'IF'
下面是我正在编写的存储过程的示例
CREATE PROCEDURE [dbo].[Proc_MyProc]
@MODE INT = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
WITH ss as (
select col1, col2, col3, col4, col5
from TableTest
)
IF @MODE = 1
select col1 as A, col2, sum(col5) as col5sum
from ss
group by col1, col2
order by col5sum desc
ELSE IF @MODE = 2
select col1, col2, sum(col5) as col5sum
from ss
group by col1, col2, col3
order by col5sum desc
ELSE IF @MODE = 3
select col1, col2, sum(col5) as col5sum
from ss
group by col1, col2, col4
order by col5sum desc
END
GO
我试图删除
WITH
并且语法错误消失了,但是当然这不是解决方案谢谢 :)
最佳答案
WITH
与SELECT
一起使用,因此您需要重复WITH
或使用临时表。
不过,在这种情况下,WITH
实际上没有任何值(value)-让我假设它是简化的。
第一种方法是:
if @MODE = 1
with ss as (
select col1, col2, col3, col4, col5
from TableTest
)
select col1 as A, col2, sum(col5) as col3sum
from #ss
group by col1, col2
having SnQuantity > 0
order by availability desc;
. . .
第二种方法是:
select col1, col2, col3, col4, col5
into #ss
from TableTest;
if @MODE = 1
select col1 as A, col2, sum(col5) as col3sum
from #ss
group by col1, col2
having SnQuantity > 0
order by availability desc;
. . .
关于tsql - 关键字 'IF'附近的语法不正确,如果在WITH之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50927029/