2

我创建了一个 SP 来为一家公司返回一些客户数据。我将公司 ID 和客户 ID 传递给 SP。我正在查询的表中有两种类型的客户 ID。这两种类型保存在不同的列中。

例如,我的表中有以下列。

ID、评论、CustomerTypeAId、CustomerTypeBId

任一客户 ID 可以在一行中为空。我传递给 SP 的客户 ID 可能是 A 类客户或 B 类客户。因此,在我的 WHERE 子句中,我需要指定 CustomerTypeAId 是否为空,然后查询 CustomerTypeBId。

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

4 回答 4

1

您可以ORwhere子句中使用,因为它可以是两列中的任何一列。

SELECT * 
FROM   TEST
WHERE  CustomerTypeAId = @id OR
       CustomerTypeBId = @id
于 2012-09-14T13:43:09.477 回答
1

我认为以下内容可以满足您的要求:

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

NULL 通常是布尔语句中的问题;但是,它适用于 OR。

于 2012-09-14T13:44:05.560 回答
0
WHERE @CusId IN (CustomerTypeAId, CustomerTypeBId);

但是,为什么要将这些值存储在单独的列中?介绍 Type C 的时候还要加一栏吗?相反,您应该只有一个类型列和一个 CustomerID 列。这样,当您不关心它们是什么类型时,您只需匹配 CustomerID 列。

于 2012-09-14T13:42:58.953 回答
0

听起来你需要类似的东西:

SELECT * 
FROM TEST 
WHERE CustomerTypeAId = @id 
      OR (CustomerTypeAId IS NULL AND CustomerTypeBId = @id)
于 2012-09-14T13:47:32.220 回答