2016-08-23 11 views
0

は、私は次の表T1があるとします。反復処理し、新しいテーブルを作成

| col1 | col2 | col3 | 
|------|------|------| 
| 0 | 1 | 1 | // 1 
| 1 | 0 | 1 | // 1 
| 0 | 1 | 0 | // 0 

私は今2がある時はいつでも、すべての行を反復処理する新しいテーブルT2を作成し、1を移入する必要がありますT1には1が並んでいます。 hereが説明するように、私は本当に、各行を反復処理、またはより効率的な方法があるべき

| res | 
|-----| 
| 1 | 
| 1 | 
| 0 | 

だから、新しいテーブルT2は次のようになりますか?

+0

しかし、なぜこのようなことをしたいのですか? – jarlh

+0

@ jarlh:これは私の実際の問題の非常に単純化されたバージョンです。 – user1170330

答えて

1

「1」を追加できます。各列と仮定すると(問題のように)0または1のいずれかです:あなたは本当に別のテーブルをしたい場合は

select (case when col1 + col2 + col3 = 2 then 1 else 0 end) as res 
from t1; 

selectinto t2を追加します。

注:結果セットの作成にはがない限り、SQLテーブルと結果セットはの順不同でとなります。したがって、新しい表を作成すると、行の順序は変更され、元のデータには対応しません。

select t1.*, 
     (case when col1 + col2 + col3 = 2 then 1 else 0 end) as res 
from t1; 
+0

これは、ここで説明した問題を解決します。ありがとうございます。しかし、私の記述は非常に単純化され、私はいくつかのIF文で何かを期待していました。私はより良い説明と別の質問を配置する必要があります。 – user1170330