tsql:是否可以在select中执行嵌套的case语句?

phi*_*ill 15 t-sql case

我如何在SQL查询的select子句中包含嵌套的if语句?我知道使用case时条件然后X else y结束但是你如何以相同的方式为记录集中的每个记录做一个嵌套的.

if x.boy is not null then 
   x.boy 
else if x.girl is not null
   then x.girl 
else if x.dog is not null 
   then x.dog
else 
    x.cat 
Run Code Online (Sandbox Code Playgroud)

这是我的尝试:

SELECT top 10
        id,
        case when x.boy <> NULL then 
            x.boy
        else case when  x.girl <> NULL 
            x.girl
                else case when  x.dog <> NULL 
            x.dog
                else x.cat 

        end as Who 
from house x
Run Code Online (Sandbox Code Playgroud)

它是否正确?

Gab*_*ams 17

是.案件中的案件没有任何问题.

虽然,这是你的脚本,写成corectly:

SELECT top 10
    id,
    case
        when x.boy IS NOT NULL then x.boy
        else case
            when x.girl IS NOT NULL THEN x.girl
            else case
                when x.dog IS NOT NULL THEN x.dog
                else x.cat
            end
        end
    end as Who 
from house x
Run Code Online (Sandbox Code Playgroud)

要么

SELECT top 10
    id,
    case
        when x.boy IS NOT NULL then x.boy
        when x.girl IS NOT NULL THEN x.girl
        when x.dog IS NOT NULL THEN x.dog
        else x.cat
    end as Who 
from house x
Run Code Online (Sandbox Code Playgroud)

要么

SELECT top 10
    id,
    coalesce(x.boy, x.girl, x.dog, x.cat) AS Who
from house x
Run Code Online (Sandbox Code Playgroud)


Joe*_*lli 16

您可以使用COALESCE简化此操作.

SELECT TOP 10 id, COALESCE(x.boy, x.girl, x.dog, x.cat) as Who
    FROM house x
Run Code Online (Sandbox Code Playgroud)