2017-06-15 32 views
1

我正在進行基於股票的零售數據庫的遷移。排除使用NOT LIKE除非存在變量

當一個產品是一次性的產品訂購代碼具有領先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,如果有aq,我們需要保留產品ty在任何這些列中。

示例數據集位於下面的鏈接中(不包含上面的最後一條查詢行)。在這種情況下,我希望排除第19和20行。

https://lh5.googleusercontent.com/qTE1Av9i0x0BSjv_xAMj18bhX14cNWQPW9iYIBtpk4a6imhFiMRd7jRjFim_vPHxzcgu9h4xU9t8opA=w1920-h1070

任何想法是值得讚賞!

**我還需要返回可能有0股或爲了qtys

+0

如果這些是數字('stkqty'等),請不要將它們放在引號中 – JohnHC

回答

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

+0

完美謝謝! –