我正在使用SQL Server 2012并尝试在CTE中运行3个单独的语句。
类似的东西:
WITH C1 AS
(
if (@Param = 1)
SELECT Field1, Field2 FROM TableA
else if (@Param = 2)
SELECT Field1, Field2 FROM TableB
else
SELECT Field1, Field2 FROM TableC
),
C2 AS
Select xxxxx
但它没有编译。
这可能吗?
答案 0 :(得分:2)
您可以将CTE的Select
更改为:
WITH C1 AS
(
SELECT Field1, Field2 FROM TableA WHERE @Param = 1
UNION ALL
SELECT Field1, Field2 FROM TableB WHERE @Param = 2
UNION ALL
SELECT Field1, Field2 FROM TableC WHERE @Param <> 1 and @Param <> 2
),
C2 AS
Select xxxxx
答案 1 :(得分:1)
不,公共表表达式不支持if else块。公用表表达式基本上是内联视图。