SQL WHERE子句嵌入条件判断:特定ID的Quantity过滤需求
问题:存储过程SELECT语句的WHERE子句过滤逻辑实现
首先来看原始数据集:
DNo Quantity Sites ID Desc ---------------------------------------------------------------------------- 18050075 9 2 ADD6 Number of client reporting sites 18050075 9 2 ADD7 Annual Maintenance 18050075 9 2 ADD8 Ongoing Fees 18050075 1 2 ADD9 Employee Meeting (per day plus incurred expenses) 18050075 0 2 ADD10 Custom Data file Layouts 18050075 0 2 ADD11 Error Correction for more than 2% errors in a single
需求明确:在存储过程的SELECT语句中,仅当Quantity>0时返回ADD9、ADD10、ADD11,其余ID不受此条件限制,预期结果集如下:
18050075 9 2 ADD6 Number of client reporting sites 18050075 9 2 ADD7 Annual Maintenance 18050075 9 2 ADD8 Ongoing Fees 18050075 1 2 ADD9 Employee Meeting (per day plus incurred expenses)
解决方案
把逻辑拆成两部分写进WHERE子句就行,直接看代码示例:
SELECT DNo, Quantity, Sites, ID, [Desc] FROM 你的目标表名 WHERE -- 第一部分:ADD6/ADD7/ADD8不受Quantity限制,全部保留 ID IN ('ADD6', 'ADD7', 'ADD8') -- 第二部分:ADD9/ADD10/ADD11仅保留Quantity大于0的记录 OR (ID IN ('ADD9', 'ADD10', 'ADD11') AND Quantity > 0)
简单捋下逻辑:
- 对于不需要限制的ID(ADD6、ADD7、ADD8),直接通过
ID IN (...)保留它们的所有记录,不管Quantity取值; - 对于需要限制的ID(ADD9、ADD10、ADD11),用括号把两个条件绑定,只有同时满足ID属于这三个且Quantity>0时,才会被筛选出来。
这样组合起来就完全匹配你的需求啦,运行后就能得到预期的结果集。
内容的提问来源于stack exchange,提问作者SP1
相关产品推荐
相关产品推荐

