我创建了一个SP来为一家公司返回一些客户数据。我将公司ID和客户ID传递给SP。我正在查询的表中有两种类型的客户ID。这两种类型保存在不同的列中。
举个例子说我的表中有以下列。
ID,评论CustomerTypeAId,CustomerTypeBId
任何一个客户ID都可以在一行中为空。我传递给SP的客户ID可以是A类客户或B类客户。所以在我的WHERE子句中,我需要指定CustomerTypeAId是否为null然后查询CustomerTypeBId。
@CusId int=0
SELECT * FROM TEST
WHERE (How to put this part?)
答案 0 :(得分:1)
您可以在OR
子句中使用where
,因为它可以是两列中的任意一列。
SELECT *
FROM TEST
WHERE CustomerTypeAId = @id OR
CustomerTypeBId = @id
答案 1 :(得分:1)
我认为以下是您想要的:
select *
from test
where CustomerTypeAid = @CustId or CustomerTypeBid = @CustId
NULL在布尔语句中经常是个问题;但是,它适用于OR。
答案 2 :(得分:0)
WHERE @CusId IN (CustomerTypeAId, CustomerTypeBId);
但是,为什么要将这些值存储在不同的列中?在引入Type C时,您是否要添加另一列?相反,您应该只有一个类型列和一个CustomerID列。这样,当您不关心它们的类型时,您只需匹配CustomerID列。
答案 3 :(得分:0)
听起来像你需要的东西:
SELECT *
FROM TEST
WHERE CustomerTypeAId = @id
OR (CustomerTypeAId IS NULL AND CustomerTypeBId = @id)