如何根据条件选择列?

Riz*_*Riz 19 sql t-sql sql-server

我有一个名为@status的变量,我在这个select语句之前设置了它:

Select
ordr_num as num,
ordr_date as date,
ordr_ship_with as shipwith
From
order
where ordr_num = @ordrNum
Run Code Online (Sandbox Code Playgroud)

我只想选择ordr_ship_with@status <> 'Cancelled',否则我想为shipwith选择null.我该如何做到这一点?

Joe*_*orn 35

SELECT ordr_num as num, ordr_date as date, 
    CASE WHEN @status<>'Cancelled' THEN ordr_ship_with ELSE NULL END as shipwith 
FROM order 
WHERE ordr_num = @ordrNum
Run Code Online (Sandbox Code Playgroud)


Raj*_*ore 5

试试看

Select 
    ordr_num as num, 
    ordr_date as date, 
    CASE 
        WHEN @Status <> 'Cancelled' THEN ordr_ship_with 
        ELSE NULL END
    as shipwith 
From order 
where ordr_num = @ordrNum
Run Code Online (Sandbox Code Playgroud)

尽管我感觉到您的状态是订单表中的实际列。在这种情况下,请执行以下操作:

Select 
    ordr_num as num, 
    ordr_date as date, 
    CASE 
        WHEN Status <> 'Cancelled' THEN ordr_ship_with 
        ELSE NULL END
    as shipwith 
From order 
where ordr_num = @ordrNum
Run Code Online (Sandbox Code Playgroud)