2017-06-15 1 views
1

Ich arbeite an der Migration einer bestandsbasierten Datenbank.Mit NOT LIKE ausschliessen, wenn keine Variable vorhanden ist

Wenn ein Produkt eine einmalige Bestellung ist der Produktcode eine führende CO hat

Wir wollen nicht die CO Produkte über nehmen, wenn sie zur Zeit sind, auf Lager, Lager Bestellung oder im Kundenauftrag

ich habe die folgende und einige CASE Variationen versucht, aber ohne Erfolg

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); 

die ‚CO%‘ NOT LIKE Funktion nur erfolgen muss, wenn der Lagerbestand, ordqty und csqty sind alle weniger als 1/mehr als 0, müssen wir das Produkt behalten, wenn es aq gibt ty in jeder dieser Spalten.

Ein Beispieldatensatz befindet sich im folgenden Link (ohne die letzte obige Abfragezeile). Ich hoffe, in dieser Situation die Zeilen 19 und 20 ausschließen zu können.

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

Alle Gedanken sind willkommen!

** Ich muss noch normal Produktcodes zurück, die 0 Lager oder bestellen qtys haben

+0

Wenn das sind Zahlen ('stkqty', etc), nicht in Anführungszeichen setzen – JohnHC

Antwort

0

Verwenden Sie ein or für den Zustand

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 
      ) 
     ) 
    ) 

Also, was sagt, ist:

ausschließen alle wie 'CO%', außer wenn einer der Werte größer als 0 ist

+0

Perfekt danke! –

Verwandte Themen