我正致力于迁移基于股票的零售数据库。
当产品是一次性订单时,产品代码具有领先的CO
除非他们目前,有库存,有库存订单或客户订单,否则我们不希望将CO产品用于其他产品
我尝试了以下和一些CASE变体,但无济于事
SELECT prdcod,
stkqty,
ordqty,
csoqty
FROM prdtbl
WHERE prdtbl.prdcod NOT LIKE '*%'
AND (prdcod NOT LIKE 'CO%' AND stkqty >0 AND ordqty >0 AND csoqty >0);
NOT LIKE'CO%'函数只有在库存数量,ordqty和csqty都小于1 /大于0时才需要发生,如果这些列中有任何数量,我们需要保留产品。
示例数据集位于下面的链接中(没有上面的最后一个查询行)。我希望在这种情况下排除第19和第20行。
任何想法都表示赞赏!
**我仍然需要退回正常的产品代码,可能有0个库存或订购qtys
答案 0 :(得分:0)
使用or
作为条件
SELECT prdcod,
stkqty,
ordqty,
csoqty
FROM prdtbl
WHERE prdtbl.prdcod NOT LIKE '*%'
AND (prdcod NOT LIKE 'CO%'
or (prdcod like 'CO%'
AND (stkqty >0
OR ordqty >0
OR csoqty >0
)
)
)
所以这就是:
排除所有类似' CO%',除非其中一个数值大于0