来自多列的where子句

时间:2012-08-15 15:03:37

标签: sql sql-server

我是这个网站和SQL的新手。需要帮助在MS SQL中构建以下查询

Select *
From Table1
Where customer = '123' and asofdate = '2012-01-01'

这是我的问题开始的地方。我需要上面列出的客户和上述日期的数据,但我想查看下面的列,其中显示数据的任何位置然后显示这些行)

and abc !='0', abcd !='0', abcde !='0', abcdef !='0'

如果我在上面的行之间使用"or"会带来行,即使是其他客户编号也是如此,如果我把“和”它带给我任何行。

3 个答案:

答案 0 :(得分:6)

如果我正确理解您的要求,您可以使用括号将布尔逻辑分组为子表达式,例如:

Select * From Table1 Where customer = '123' and asofdate = '2012-01-01' and (abc != 0 OR abcd != 0 OR abcde != 0 OR abdcdef != 0)

这相当于

WHERE true and true and (true or false or false or false)

结果为'true' - 例如括号中的一些ORed测试可能会失败,但只要其中一个为真,则整个结果为真,因此会过滤到结果集中

注意:不要使用带数值的引号 - 它们只能用于字符串(或日期)

答案 1 :(得分:1)

您可以在WHERE语句中使用括号:

WHERE customer = '123' and asofdate = '2012-01-01' and
      (abc !='0' or abcd !='0' or abcde !='0' or abcdef !='0')

答案 2 :(得分:1)

您只需要使用AND和括号添加条件:

Select *
From Table1
Where (customer = '123' and asofdate = '2012-01-01')
    AND (abc !='0' OR abcd !='0' OR abcde !='0' OR abcdef !='0')