在SQL中使用逻辑

时间:2009-03-28 10:14:53

标签: sql-server sql-server-2005 tsql

我想在TSQL(SQL Server 2005)中执行类似的操作:

IF (Column1 = x)
{
     --CTE statement
}
ELSE
{
    --SQL statement
}

感谢任何帮助。

2 个答案:

答案 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

中进行CTE

答案 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

否则,我不确定你想要达到的目标......

相关问题