0

我试图根据 a 中的变量返回不同的数据SELECT。像这样的东西:

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

这是IF在 SQL 中使用条件的正确方法是什么?还是有更好的选择来代替我想要完成的事情?

4

2 回答 2

5

如果要返回不同数量的列,则需要使用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
于 2013-05-08T15:42:39.353 回答
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
于 2013-05-08T15:46:15.117 回答