sql - 从多列查询

标签 sql sql-server

我有下表,名为 Fruits。

ID English Spanish German
1  Apple   Applice Apple-
2  Orange  --      --

如果程序通过 1 和英语,我必须返回 'Apple'。我怎么能为此编写 sql 查询?谢谢。

最佳答案

select
    ID,
    case @Lang
        when 'English' then English 
        when 'Spanish' then Spanish
    end as Name
from Fruits
where ID = @ID;

或者,如果您有多个列可供选择,您可以使用 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

关于sql - 从多列查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18247431/

相关文章:

sql - TSQL 在 sql-server 中清除数据库的模式?

sql-server - Alter 表中的 Case 语句错误

sql - 计算值大于 x 的时间(以分钟为单位)

MySQL INSERT INTO 查询在 C 中太慢

sql - 在 SQL Server 中插入 "Golf"失败,错误未闭合引号

Mysql语句转Sql Server

jquery - FullCalender.io 与经典 ASP

MySQL 将字符串从一个字符替换为另一个字符

sql - 如何聚合sql(HANA)中不同行的值?

mysql - 从表中删除数据时出现 sql 错误 - 删除的目标和源