2

ある会社の顧客データを返す SP を作成しました。会社 ID と顧客 ID を SP に渡します。照会しているテーブルには、2 種類の顧客 ID があります。2 つのタイプは異なる列に保存されます。

たとえば、テーブルに次の列があるとします。

ID、コメント、CustomerTypeAId、CustomerTypeBId

いずれかの顧客 ID が 1 つの行で null になる場合があります。SP に渡す顧客 ID は、タイプ A の顧客またはタイプ B の顧客である可能性があります。したがって、私の WHERE 句では、CustomerTypeAId が null であるかどうかを指定してから、CustomerTypeBId を照会する必要があります。

@CusId int=0
SELECT * FROM TEST
WHERE (How to put this part?)
4

4 に答える 4

1

私はあなたが望むことを次のようにすると思います:

select *
from test
where CustomerTypeAid = @CustId or CustomerTypeBid = @CustId

NULL は、ブール ステートメントで問題になることがよくあります。ただし、OR では正常に機能します。

于 2012-09-14T13:44:05.560 に答える
1

OR2つの列のいずれかになる可能性があるため、where句で使用できます。

SELECT * 
FROM   TEST
WHERE  CustomerTypeAId = @id OR
       CustomerTypeBId = @id
于 2012-09-14T13:43:09.477 に答える
0

次のようなものが必要なようです。

SELECT * 
FROM TEST 
WHERE CustomerTypeAId = @id 
      OR (CustomerTypeAId IS NULL AND CustomerTypeBId = @id)
于 2012-09-14T13:47:32.220 に答える
0
WHERE @CusId IN (CustomerTypeAId, CustomerTypeBId);

しかし、なぜこれらの値を別々の列に保存するのでしょうか? Type C を導入する場合、さらに別の列を追加する予定ですか? 代わりに、type 列と CustomerID 列だけが必要です。そうすれば、それらがどのタイプであるかを気にしない場合は、CustomerID 列で照合するだけです。

于 2012-09-14T13:42:58.953 に答える