1

非常に漠然とした質問で申し訳ありませんが、ここにあります。次のように、SQL Server で SQL クエリを作成する必要があります。col1、col2、..... col10の10列を持つtblAというテーブルがあります。各列は null ではなく、いくつかの値と int 型のすべてを確実に保持します。クエリは、少なくとも 4 つの列が特定のフィルター基準と一致するすべてのレコードを選択する必要があります。ここで、フィルター基準には 10 列すべての値があります。

私は手がかりを得るためにググった。SQL サーバーと単一のクエリで実行する必要があります。提案してください。

前もって感謝します。

4

3 に答える 3

3

CASE 式を使用して、4 つ以上の列が一致するかどうかを判断できます。

 SELECT *
 FROM YourTable
 WHERE CASE WHEN Col1 = Filter1 THEN 1 ELSE 0 END + 
     CASE WHEN Col2 = Filter2 THEN 1 ELSE 0 END + 
     ....
     CASE WHEN Col10 = Filter10 THEN 1 ELSE 0 END >= 4
于 2012-09-04T15:20:11.867 に答える
3
SELECT *
FROM
    yourtable
WHERE
    case col1 when @value1 then 1 else 0 end +
    case col2 when @value2 then 1 else 0 end +    
    ...
    case col10 when @value10 then 1 else 0 end 

    >=4
于 2012-09-04T15:19:22.417 に答える
0

次のようなことができます。

select *
from (select t.*,
             (case when col1 <whatever> then 1 else 0 end) as col01_matches,
             (case when col2 <whatever> then 1 else 0 end) as col02_matches,
             . . .
      from t
     ) t
where (col1_matches + col2_matches + col3_matches . . .) >= 4

これにより、一致ごとに個別のインジケータ変数が作成されます。単一の変数で、サブクエリで合計を行うこともできます。ロジックがより複雑になった場合や、一致するものを確認したい場合に備えて、各一致を個別に行うことをお勧めします。

于 2012-09-04T15:21:42.223 に答える