我有以下数据集
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语句中,如果数量大于0,我只想返回ADD9,ADD10,ADD11。有人可以告诉我如何在where子句中编写if语句,这样我才能应用条件到特定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)
由于
答案 0 :(得分:1)
下面怎么样?它依赖于将您的数据拆分为两个单独的查询,然后附加。
select * -- this gets all data other than these ids
from your_data_table
where ID not in ('ADD9', 'ADD10', 'ADD11')
union all -- this joins everything toghether
select * -- this gets all requested data for these ids
from your_data_table
where ID in ('ADD9', 'ADD10', 'ADD11') and Quantity > 0
答案 1 :(得分:0)
从表中选择*(ID在('ADD9','ADD10','ADD11')和数量> 0)或ID不在('ADD9','ADD10','ADD11')
答案 2 :(得分:0)
这是你想要的吗?
SELECT *
FROM yourTable
WHERE ID NOT IN ('ADD9', 'ADD10', 'ADD11') OR Quantity > 0;
答案 3 :(得分:0)
对于您作为输出提供的结果集
/
对于您在说明中提到的结果集
SELECT *
FROM tableName
WHERE Quantity > 0
注意:您实际上是在询问描述和给定输出中提到的两个不同输出,因此请根据您的需要决定一个。
答案 4 :(得分:0)
可能的替代方法是使用嵌套的CASE函数。 e.g:
select *
from your_data_table
where 1 = (CASE WHEN ID IN ('ADD9', 'ADD10', 'ADD11') THEN CASE WHEN Quantity > 0 THEN 1 END ELSE 1 END)
逻辑的工作原理如下:
IF ID IN ('ADD9', 'ADD10', 'ADD11')
THEN
IF Quantity > 0
THEN
Include It
ELSE
Exclude It
ELSE
Include It