2013-05-08 52 views
0

我試圖根據SELECT中的變量返回不同的數據。事情是這樣的:SQL SELECT語句塊使用IF ELSE

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

什麼,這是使用SQL的IF條件的正確方法?還是有更好的選擇,我想要完成什麼?

回答

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 
4

如果你想返回不同的列數,你需要使用一個IF

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

如果你想在同一列不同的數據(假設相同的數據類型),你可以使用a CASE

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