我想在TSQL(SQL Server 2005)中执行类似的操作:
IF (Column1 = x)
{
--CTE statement
}
ELSE
{
--SQL statement
}
感谢任何帮助。
答案 0 :(得分:4)
这是查询的一部分吗?还是靠自己?
在SELECT
之外,你有:
IF ([test])
BEGIN
[true branch]
END
ELSE
BEGIN
[false branch]
END
分支机构可以做任何事情,包括使用CTE等。
在查询中,您有CASE
:
SELECT ..., CASE WHEN Column1=x THEN [answer1]
ELSE [answer2] END, ...
但是,您无法在CASE
答案 1 :(得分:0)
CTE适用于整个声明,不是独立的。它是更大的SQL构造中的子句或子构造。
如果每个语句的输出不同
,则此方法有效IF EXISTS (SELECT * FROM table WHERE Column1 = x)
BEGIN
;WITH cStuff AS
(
...
)
SELECT
...
FROM
tables and cStuff
END
ELSE
BEGIN
SELECT
...
FROM
tables
END
如果输出相同,则此方法有效:
;WITH cStuff AS
(
...
)
SELECT
...
FROM
tables and cStuff
WHERE
column1 = x
UNION ALL
SELECT
...
FROM
tables
WHERE
column1 <> x
否则,我不确定你想要达到的目标......