我正在研究一个基于股票的零售数据库的迁移。
当产品是一次性订单时,产品代码有一个领先的公司
我们不想把这些共同产品带到其他地方,除非它们目前有库存,有现货,或者有客户订单
我试过以下几种情况,但都没有成功
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);
只有当库存数量、订单数量和csqty都小于1/大于0时,才需要使用不喜欢的“CO%”函数,如果这些列中有数量,我们需要保留产品。
下面的链接中有一个示例数据集(上面没有最后一个查询行)。我希望在这种情况下排除19和20行。
https://lh5.googleusercontent.com/qTE1Av9i0x0BSjv_xAMj18bhX14cNWQPW9iYIBtpk4a6imhFiMRd7jRjFim_vPHxzcgu9h4xU9t8opA=w1920-h1070
任何想法都值得赞赏!
**我仍然需要返回正常的产品代码,可能有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
关于sql - 除非存在变量,否则不使用NOT LIKE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44562361/