从多列查询

TNA*_*TNA 2 sql sql-server

我有下表名为Fruits.

ID English Spanish German
1  Apple   Applice Apple-
2  Orange  --      --
Run Code Online (Sandbox Code Playgroud)

如果程序通过1和英语,我必须返回'Apple'.我怎么能写那个sql查询?谢谢.

Rom*_*kar 5

select
    ID,
    case @Lang
        when 'English' then English 
        when 'Spanish' then Spanish
    end as Name
from Fruits
where ID = @ID;
Run Code Online (Sandbox Code Playgroud)

或者,如果您有多个列可供选择,您可以使用apply,这样您就不必编写多个case语句

select
    F.ID,
    N.Name,
    N.Name_Full
from Fruits as F
    outer apply (values
        ('English', F.English, F.English_Full),
        ('Spanish', F.Spanish, F.Spanish_Full)
    ) as N(lang, Name, Name_Full)
where F.ID = @ID and N.lang = @lang
Run Code Online (Sandbox Code Playgroud)