SQL SELECT中的语句块使用IF ELSE

时间:2013-05-08 15:39:31

标签: sql sql-server tsql if-statement

我正在尝试根据SELECT中的变量返回不同的数据。像这样:

SELECT
   IF @variable = 'YES'
      column1, column2
   ELSE
      column3
FROM TABLE

在SQL中使用IF条件的正确方法是什么?或者,有没有比我想要完成的更好的替代方案?

2 个答案:

答案 0 :(得分:4)

如果您想返回不同数量的列,则需要使用IF

IF @variable = 'YES'
BEGIN
    SELECT column1, column2
    FROM YourTable
END
ELSE
BEGIN 
    SELECT column3
    FROM YourTable
END

如果您想在同一列上使用不同的数据(假设数据类型相同),则可以使用CASE

SELECT CASE WHEN @variable = 'YES' THEN column1 ELSE Column2 AS Data
FROM YourTable

答案 1 :(得分:0)

您可以使用IF语句,但您需要设置多个查询。您可以使用CASE选择一列或另一列,但不要像问题中那样选择一个或多个。

DECLARE @var INT = 1;

DECLARE @test TABLE (
    Col1 int,
    Col2 int,
    Col3 int
)

INSERT INTO @test VALUES (1,2,3)

IF @var = 1
BEGIN
    SELECT  Col1, Col2
    FROM    @test
END
ELSE
BEGIN
    SELECT  Col3
    FROM    @test
END