我正在使用SQL Server 2014,我有一个查询,它连接3个表用于特定输出。其中一个表(称为ResStayDate)的摘录如下所示:
ResID StayDate PlanCode
152 2015-08-02 COAI
152 2015-08-03 COAI
152 2015-08-04 COAI
296 2015-09-10 GBHB
296 2015-09-11 COHB
296 2015-09-12 GBHB
315 2015-09-23 FRBB
315 2015-09-24 FRBB
400 2015-10-02 CORB
400 2015-10-03 CORB
400 2015-10-04 CORB
“真实”表格有超过500,000行。我需要在查询中添加一个过滤器,以便它排除所有StayDates的PlanDode以'CO'开头的所有ResId,但包括那些'COR'作为PlanCode的ResID。
换句话说,我希望我的查询输出ResID 296(因为它的所有StayDates都不以CO开头),315和400。
输出:
ResID StayDate PlanCode
296 2015-09-10 GBHB
296 2015-09-11 COHB
296 2015-09-12 GBHB
315 2015-09-23 FRBB
315 2015-09-24 FRBB
400 2015-10-02 CORB
400 2015-10-03 CORB
400 2015-10-04 CORB
我的查询如下,需要修改:
SELECT ResID, StayDate, PlanCode
FROM ResStayDate
WHERE PlanCode not like 'CO%'
但是,上述代码行也将不包括ResID 296和400。
注意:我没有在这里显示完整的查询(带有连接);我只需要理解这个特定过滤过程背后的逻辑,我会相应地修改以适合我的查询。
答案 0 :(得分:1)
SELECT ResID, StayDate, PlanCode
FROM ResStayDate
WHERE (
PlanCode not like 'CO%'
OR PlanCode like 'COR%'
)
答案 1 :(得分:0)
你尝试过这样的事吗?
SELECT ResID, StayDate, PlanCode
FROM ResStayDate
WHERE PlanCode not like 'CO%'
UNION ALL
SELECT ResID, StayDate, PlanCode
FROM ResStayDate
WHERE PlanCode like 'COR%'
这意味着第一个查询将提取代码不以CO开头的所有记录,第二个查询将提取代码以COR开头的记录。
答案 2 :(得分:0)
可能不喜欢CO [A-QS-Z]%'将工作。但是一直无法测试它。