>

고객 번호와 다른 열이있는 데이터베이스가 있습니다. 이제이 SQL을 준비했지만 여전히 문제가 발생하여 올바르게 얻는 방법을 알 수 없습니다. 내가 필요로하는 것은 soort = 041 인 모든 고객을 얻는 것입니다. 또한 soort 040도 있지만 soort = 043을 가질 수는 없습니다.

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

'043에 분류하지 않음'을 시도했지만 여전히 고객에게 043도 제공합니다.


  • 답변 # 1

    이것을 사용 해보세요 :

    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)
    
    

    열 소트의 데이터 유형에 대해 약간 혼란 스러워요. INTEGER od CHAR/VARCHAR입니까? 대신 시도하십시오.

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

  • 답변 # 2

    한 세트의 괄호로만 시도하십시오

    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
    
    

  • 답변 # 3

    다음과 같은 것을 원한다고 생각합니다 :

    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;
    
    

    와이즈 비즈  숫자 값이 의심되기 전에. 아무 의미가 없습니다. 이것이 문자열이면 작은 따옴표를 사용하십시오 ( 0 ).

    '041'

관련 자료

  • 이전 curl - PHP에서 인터 스위치 퀵 텔러 API 통합
  • 다음 xsd - VS 코드에 대한 XML 스키마 확장이 있습니까