SQL Serverで書き換えようとしているMS Accessに現在存在するという酷いクエリがあります。基本的には、特定の基準に基づいてフィルタリングしようとしているテキストファイルのデータを取得します。SQL Where句をLIKEとINで使用
私の問題は、データがテキストファイルに書き込まれる方法に伴い発生します。私のテーブルには、次のようになります。
Table1
BusinessDate DateTime
Amount money
User1 varchar
User2 varchar
User3 varchar
User4 varchar
... varchar
User16 varchar
私は日付を持っているし、別のユーザーによって追加されたデータを16列を持つデータテーブルを持っています。この表にはいくつかのフィールドがありますが、この質問には不要です。
userIdが何かのような15の値に対して現在のクエリがフィルタリングします。
SELECT *
FROM Table1
WHERE (User1 Like 'AB%' Or User1 Like 'CD%' Or User1 Like 'EF%'...)
OR (User2 Like 'AB%' Or User2 Like 'CD%' Or User2 Like 'EF%'...)
私がしようとしているのは、同じ値をテーブルに格納して、私のクエリでそれらに参加できるようにすることです。私はすべての値がわからないので、ワイルドカードを使用する必要があります。なぜなら、英数字を組み合わせることができるからです。だから私はこのようなテーブルを持っています。そして、私のクエリは次のようなものになるだろう
ValueTable
AB%
CD%
EF%
HI%
...
が、私はこれが可能
SELECT *
FROM Table1
WHERE User1 Like IN (SELECT Value FROM ValueTable)
OR User2 Like IN (SELECT Value FROM ValueTable)
ではないと思います。このような何かをすることは可能ですか?もしそうなら、私は完全に困惑しているので、どの構文を使うべきですか?
データモデルが間違っています。各Table1行に1人のユーザー/金額/ businessDateのデータが含まれるようにデータを再構成できますか?ピボットクエリを使用して既存の構造を作成することができるはずです。フィルタリングはずっと簡単です。 –
@ジムガリソン私はそれをはるかに簡単にフィルタリングすることは容易だが、データを再構成することは難しいだろう。このファイルは、私が上に示した約70列のデータよりも多くのフィールドを持っており、非常に難しいでしょう。 – Taryn
悪の勢力とのバランスをとって – swasheck