2

Fruits という名前の次のテーブルがあります。

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

プログラムが 1 と英語に合格した場合、「Apple」を返さなければなりません。そのためのSQLクエリをどのように書くことができますか? ありがとうございました。

4

4 に答える 4

5
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
于 2013-08-15T06:38:11.617 に答える
0

ストアドプロシージャでは「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

...

于 2013-08-15T06:35:49.567 に答える