2016-04-30 5 views
0

私は50列のテーブルを持っています。私は50列の任意の 2つ(またはそれ以上)のすべてのレコードを検索する必要があり、この2つの列が特定の値を上回るすべてのレコードを選択する方法

GUID Field1 Field2 Field3 .... Field50 
---- ------ ------ ------  ------- 
1  0  1  0   0 
2  1  0  0   1 
3  0  2  3   1 

これは返されたレコード2と3につながる> 0であるように見えます。

私はこれにどのように取り組むべきか分かりません。私がすべての順列を試してみると、それは狂気になります。より良い方法が必要です。

私はSQLを使用しています。

+0

あなたはどのデータベースを使用していますか?それに応じてタグを付けてください。 –

答えて

1

データベースデザインが間違っている可能性があります。複数の列に同じデータがある場合(数字の接尾辞でしか区別できない場合)、通常、適切な接合テーブルが必要であることが示唆されます。いずれの場合においても

、あなたがこれを行うことができ、それだけで長いcaseベースの条件である:

select t.* 
from t 
where ((case when field1 > 0 then 1 else 0 end) + 
     (case when field2 > 0 then 1 else 0 end) + 
     . . . 
     (case when field50 > 0 then 1 else 0 end) + 
    ) >= 2; 

あなたは追加の47の分野で. . .に記入する必要があります。

+1

私のフィールド名は実際にはfield1フィールド2ではありません – Nuevallorker

関連する問題