Fruits という名前の次のテーブルがあります。
ID English Spanish German
1 Apple Applice Apple-
2 Orange -- --
プログラムが 1 と英語に合格した場合、「Apple」を返さなければなりません。そのためのSQLクエリをどのように書くことができますか? ありがとうございました。
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
ストアドプロシージャでは「if else」条件を使用できるため、ストアドプロシージャを使用してそれを行うことができます。元:
@ID as int,@Lang as varchar(50)
if @Lang = 'English'
begin
select ID,English from Fruits where ID = @ID;
end
else
if @Lang = 'Spanish'
begin
select ID,Spanish from Fruits where ID = @ID;
end
...