我正在研究一个基于股票的零售数据库的迁移。
当产品是一次性订单时,产品代码有一个领先的公司
我们不想把这些共同产品带到其他地方,除非它们目前有库存,有现货,或者有客户订单
我试过以下几种情况,但都没有成功

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/

10-13 00:47