sql哪里对两列

时间:2012-09-14 13:41:25

标签: sql sql-server sql-server-2008 tsql

我创建了一个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?)

4 个答案:

答案 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)