0

inという名前の ( bittype) 列があり、 ofを持つログ テーブルがあります。行の存在は、inが破損していることを示しています。Statustable10 = Stopped, 1 = StartedIDtable1Statustable1

select3 つのステータスをカバーするステートメントを作成するにはどうすればよいですか? NewStatus選択したすべての列に加えて、列から値を取得する新しい列 ( ) と、行 IDStatusをフィルター処理する副選択ステートメントを含む一時テーブルを作成することを考えていました。しかし、私はそれを行う方法を想像することはできません!table2table1

より良いアプローチはありますか?

4

1 に答える 1

1

を使ってleft join

select table1.*, 
   case when table2.id is null then 
        case table1.status 
        when 0 then 'stopped'
        when 1 then 'started'
        end
   else 'damaged'
   end
from
   table1 left join table2 on table1.id = table2.id 

おそらくisnull、意図を曖昧にするために使用できますが、これは高速である場合とそうでない場合があります。

于 2013-08-05T09:41:44.710 に答える