我是这个网站和SQL的新手。需要帮助在MS SQL中构建以下查询
Select *
From Table1
Where customer = '123' and asofdate = '2012-01-01'
这是我的问题开始的地方。我需要上面列出的客户和上述日期的数据,但我想查看下面的列,其中显示数据的任何位置然后显示这些行)
and abc !='0', abcd !='0', abcde !='0', abcdef !='0'
如果我在上面的行之间使用"or"
会带来行,即使是其他客户编号也是如此,如果我把“和”它带给我任何行。
答案 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')