SELECT子句中的IF

时间:2018-12-06 17:51:16

标签: sql-server-2012

如何根据其值返回一列或另一列?

我有以下存储过程(这只是一个示例):

SELECT 
    Stds.FirstName, 
    Addrs.Address 
FROM
    Students AS Stds 
INNER JOIN 
    Address AS Addrs ON Addrs.StdId = Stds.StdId 
GROUP BY 
    Addrs.FirstName, 
    Stds.Address 

现在的想法是Addresses有两个字段:AddressAddressTwo,我想返回AddressTwo IF {{1} }是Address的{​​{1}}。

3 个答案:

答案 0 :(得分:0)

好吧,对于我的特殊情况,也许通常我想使用ISNULL()。

在此处回复: Select a column if other column is null

答案 1 :(得分:0)

您可以使用COALESCE,例如:

SELECT 
    Stds.FirstName, 
    COALESCE(Addrs.Address, Addrs.AddressTwo) AS Addr
FROM 
    Students AS Stds INNER JOIN Address AS Addrs ON Addrs.StdId = Stds.StdId 

答案 2 :(得分:0)

您可以在下面的sql中使用。

SELECT 
    Stds.FirstName, 
    case when Addrs.Address is null then AddressTwo else  Addrs.Address end Address 
FROM
    Students AS Stds 
INNER JOIN 
    Address AS Addrs ON Addrs.StdId = Stds.StdId 
GROUP BY 
    Addrs.FirstName, 
    case when Addrs.Address is null then AddressTwo else  Addrs.Address end