【发布时间】:2023-04-09 15:16:02
【问题描述】:
我想在 TSQL (SQL Server 2005) 中做这样的事情:
IF (Column1 = x)
{
--CTE statement
}
ELSE
{
--SQL statement
}
感谢任何帮助。
【问题讨论】:
标签: sql-server sql-server-2005 tsql
我想在 TSQL (SQL Server 2005) 中做这样的事情:
IF (Column1 = x)
{
--CTE statement
}
ELSE
{
--SQL statement
}
感谢任何帮助。
【问题讨论】:
标签: sql-server sql-server-2005 tsql
那是查询的一部分吗?还是自己?
在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 内进行 CTE
【讨论】:
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
否则,我不确定你想要达到什么目的......
【讨论】: