Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Server没有合并结果,而是变得相互排斥_Sql_Sql Server_Tsql_Where Clause - Fatal编程技术网

Sql Server没有合并结果,而是变得相互排斥

Sql Server没有合并结果,而是变得相互排斥,sql,sql-server,tsql,where-clause,Sql,Sql Server,Tsql,Where Clause,我有一个表变量,当试图过滤数据时,我有一个必须满足的条件。 用户故事-当HCPC_代码包含LCS且允许金额>0时,则显示这些记录 我看到的是,我尝试在数据周围加上括号,但它将允许的_AMT>0视为Where子句中的另一个条件 因此: 及 它们都返回1056条记录,但是,我改为省略“NOT”,甚至用LIKE代替了“IN” 我必须是超级生锈的sql server,因为这应该不难做到 我想做点像这样的事吗 除非我遗漏了什么,否则看起来只需要将NOT IN更改为like,并将您的通配符添加到LCS的开头

我有一个表变量,当试图过滤数据时,我有一个必须满足的条件。 用户故事-当HCPC_代码包含LCS且允许金额>0时,则显示这些记录

我看到的是,我尝试在数据周围加上括号,但它将允许的_AMT>0视为Where子句中的另一个条件

因此:

它们都返回1056条记录,但是,我改为省略“NOT”,甚至用LIKE代替了“IN”

我必须是超级生锈的sql server,因为这应该不难做到

我想做点像这样的事吗


除非我遗漏了什么,否则看起来只需要将NOT IN更改为like,并将您的通配符添加到LCS的开头

此外,LSC周围不需要括号

select * from @billingEdit where (HCPC_CODE LIKE '%LCS%' AND ALLOWED_AMT > 0) OR HCPC_CODE NOT LIKE '%LCS%'

我说做你提供的这件事

select * from @billingEdit where 
((HCPC_CODE LIKE('LCS%') AND ALLOWED_AMT > 0)
OR
(HCPC_CODE NOT LIKE('LCS%')
))

您的第三个查询应该可以工作。只需将LCS%更改为%LCS%。这将处理以LCS开头的HCPCI代码,以LCS结束,或者在中间具有LCS。考虑到您的HCPC_代码也可能为空,您的查询应该如下所示-

select * from @billingEdit
where (HCPC_CODE like '%LCS%' and ALLOWED_AMT > 0)
or (isnull(HCPC_CODE,'') not like '%LCS%');

下面是我尝试过的SQLFIDLE->

不在“LCS%”中,它可能会匹配所有内容-它不像通配符那样处理。请发布失败的实际查询。问题到底是什么?从@billingEdit中选择*没有任何不合理之处,其中HCPC代码类似于“%LCS%”,并且允许的金额>0;。如LCS和允许金额>0。。。。有什么不对?如果没有LCS记录,我得到的结果为零。当绑定到行中包含LCS的记录时,只拉取类似LCS的记录。。。。当允许时\u amt>0I使用此select*从@billingEdit获取所有记录,但当我运行您的语句时,我获取的记录为零。所以不。。。。我希望where子句条件仅在允许的金额>0时显示LCS记录,目前没有HCPC代码的记录,例如每小时sql作业上的LCS更改抱歉,我误解了第二个条件。看来你的第三个问题应该是有效的。这一个?从@billingEdit中选择*,其中HCPC_代码如“LCS%”和允许金额>0,或HCPC_代码不如“LCS%”,只要“LCS”是字段的第一个字符,就可以工作。否则,您在开始时也需要通配符,如“%LCS%”。不,关键是,如果单词的一部分是“LCS”,则只显示那些允许\u Amt>0的LCS记录,但仍显示所有其他记录……我忘了这一点。美好的
select * from @billingEdit   currently gives  1,069 records

select * from @billingEdit where (HCPC_CODE LIKE ('%LCS%') AND ALLOWED_AMT > 0)   gives zero records as in table variable there are NO LCS (changes every hour) 


select * from @billingEdit where ALLOWED_AMT > 0   -- gives  1,056 records

select * from @billingEdit where HCPC_CODE like 'LCS%'   -- gives 0 records as expected for right now 
select * from @billingEdit where (HCPC_CODE LIKE '%LCS%' AND ALLOWED_AMT > 0) OR HCPC_CODE NOT LIKE '%LCS%'
select * from @billingEdit where 
((HCPC_CODE LIKE('LCS%') AND ALLOWED_AMT > 0)
OR
(HCPC_CODE NOT LIKE('LCS%')
))
select * from @billingEdit
where (HCPC_CODE like '%LCS%' and ALLOWED_AMT > 0)
or (isnull(HCPC_CODE,'') not like '%LCS%');