Select 根据过程中的输入变量,从 2 列到特定列名称的数据

Select data from 2 columns to a specific column name based on an input variable in a procedure

我需要修改存储过程以恢复常量列名称,但让它从英语响应切换为法语响应,并根据发送给它的语言代码visa/versa。

这是返回英语 (StaffLanguageName) 和法语 (StaffLanguageNameFR) 数据作为响应的当前过程:

SELECT StaffLanguageName
, StaffLanguageNameFR
, StaffLanguageCode
FROM dbo.lookup_staff_language
ORDER BY StaffLanguageID

我正在将一个变量传递给名为@varLanguage 的过程,它将根据用户的要求指定 EN 或 FR。

这就是我需要的程序……

@varLanguage varchar(2)
SELECT StaffLanguageName
, StaffLanguageNameFR
, StaffLanguageCode
FROM dbo.lookup_staff_language
IF @varLanguage = EN then
StaffLanguage = StaffLanguageName
ELSE
StaffLanguage = StaffLanguageNameFR

ORDER BY StaffLanguageID

我知道上面的说法是不正确的,但本质上我想要它做的是......

如果@varLanguage = EN

,则使用 StaffLanguageName 的值输出列“StaffLanguage”

如果@varLanguage = FR

,则使用 StaffLanguageNameFR 的值输出列“StaffLanguage”

如有任何帮助,我们将不胜感激。提前致谢!

您可以使用 case 表达式轻松完成此操作。像这样。

SELECT StaffLanguageName
    , StaffLanguageNameFR
    , StaffLanguageCode
    , YourNewColumn = case @varLanguage when 'EN' then StaffLanguage when 'FR' then StaffLanguageFR end
FROM dbo.lookup_staff_language