2017-04-13 9 views
0

口座番号、口座タイプ、米国州の50列のテーブルが1つあります。Mに等しい口座を照会し、その口座に他の項目の「Ne」または「NY」が含まれている場合

NEまたはNYにある登録済みのすべての勘定タイプを返すアクセスでクエリを実行したいとします。各勘定科目タイプは、州[1-50]の列に50までの異なる州を持つことができます。

だから私は持っている:

Select * 
FROM MSDAP 
WHERE account_type = 'Registered' AND State1 IN ('NE', 'NY') OR 
     State2 IN ('NE', 'NY') OR State3 IN ('NE', 'NY') OR 
     State4 IN ('NE', 'NY') OR State5 IN ('NE', 'NY') OR 
     State6 IN ('NE', 'NY') OR State6 IN ('NE', 'NY') OR 
     State7 IN ('NE', 'NY') OR State8 IN ('NE', 'NY') OR 
     State9 IN ('NE', 'NY') OR State9 IN ('NE', 'NY'); 

これは明らかに動作しません。これを行う方法はありますか?

答えて

2

ひどいデータモデルです。情報を列間に分散させるのではなく、状態ごとに1行を作成する必要があります。いずれの場合においても

、あなたの問題は見当違い括弧です:

where account_type = 'Registered' AND 
     (State1 IN ('NE', 'NY') OR State2 IN ('NE', 'NY') OR 
     State3 IN ('NE', 'NY') OR State4 IN ('NE', 'NY') OR 
     State5 IN ('NE', 'NY') OR State6 IN ('NE', 'NY') OR 
     State6 IN ('NE', 'NY') OR State7 IN ('NE', 'NY') OR -- are you really checking `state6` again? 
     State8 IN ('NE', 'NY') OR State9 IN ('NE', 'NY') OR 
     State9 IN ('NE', 'NY') -- are you really checking `state9` again? 
    ) 
+0

私が知っている - 私は私が持っているパラメータの範囲内で働いています。これはうまくいった - ありがとう! – Abba

関連する問題