2017-06-25 3 views
-1

Ich habe eine Datenbank mit Kundenzahlen und einigen anderen Spalten. Jetzt habe ich diese sql bereit, aber es vermisst immer noch etwas und ich kann nicht herausfinden, wie man es richtig macht. Was ich brauche, ist es, alle Kunden mit soort zu bekommen = 041, und sie können auch soort 040, aber sie können nicht haben soort = 043.sql spalte, wo spezifischer Wert für den Kunden gesucht wird

select * 
from tabel1 join tabel2 on 1_key_nummer = 2_key_nummer 
where typen = 'regulier' 
and datum_vanaf < sysdate 
and nvl(datum_tot, '31-12-9999') > sysdate 
and einde_registratie is null 
and soort = 041 

Es versucht „soort nicht in 043“ zu tun, aber es gibt nach wie vor mir Kunden zurück, die auch 043 haben. Kann mir jemand helfen?

+2

und soort <> 043 nicht funktioniert? – user7294900

+0

Ihre Anfrage ist viel komplizierter als Ihre Frage. Beispieldaten und gewünschte Ergebnisse würden helfen. –

Antwort

0

Ich glaube, Sie so etwas wie dies wollen:

select customer_number 
from tabel1 join 
    tabel2 
    on 1_key_nummer = 2_key_nummer 
where typen = 'regulier' and 
     datum_vanaf < sysdate 
     (datum_tot is null or datum_tot > sysdate) and 
     einde_registratie is null 
gropu by customer_number 
having sum(case when soort in (040, 041) then 1 else 0 end) > 0 and 
     sum(case when soort = 043 then 1 else 0 end) = 0; 

Beachten Sie, dass die 0 vor dem numerischen Wert verdächtig ist. Es bedeutet nichts. Wenn dies eine Zeichenfolge ist, verwenden Sie einfache Anführungszeichen ('041').

0

versuchen, dies zu verwenden:

select * 
from tabel1 join tabel2 on 1_key_nummer = 2_key_nummer 
where typen = 'regulier' 
and datum_vanaf < sysdate 
and nvl(datum_tot, '31-12-9999') > sysdate 
and einde_registratie is null 
and ((soort = 041 OR soort = 040) and soort <> 043) 

Ich bin ein wenig verwirrt über die Datentyp der Spalte soort‘. Ist es ein INTEGER od CHAR/VARCHAR, so versuchen Sie stattdessen:

and ((soort = '041' OR soort = '040') and soort <> '043') 
0

Versuchen Sie dies mit nur einem Satz von Klammern

select * 
from tabel1 join tabel2 on 1_key_nummer = 2_key_nummer 
where typen = 'regulier' 
and datum_vanaf < sysdate 
and nvl(datum_tot, '31-12-9999') > sysdate 
and einde_registratie is null 
and (soort = 041 OR soort = 040) -- Here we are saying soort can be either 40 or 41 
and soort <> 043--Here we are saying soort cannot be 43 
Verwandte Themen